iOS8 上的 UIActionSheet

Posted

技术标签:

【中文标题】iOS8 上的 UIActionSheet【英文标题】:UIActionSheet on iOS8 【发布时间】:2015-02-26 15:52:35 【问题描述】:

我有一个连接到 Chromecast 的应用程序 - 我引用了 Chromecast 示例代码,它使用 UIActionSheet 来显示我可以连接的 Chromecast 设备列表。

这适用于我的应用程序,该应用程序一直使用 BaseSDK=ios6.1 运行。最近我尝试升级到BaseSDK=iOS8.1,但UIActionSheet 不再显示。

我知道它在 iOS8 中已被弃用,但这是否意味着它不再工作了?我认为不推荐使用的方法通常需要一些时间才能“逐步淘汰”。

所以我的主要问题是:-

    我还能只使用 UIActionSheet 吗?是否只是视图层次结构发生了变化,这就是我的 ActionSheet 不再显示的原因? 如果问题 1 的答案是否定的,我该怎么做才能同时兼容 iOS7 和 iOS8。

【问题讨论】:

【参考方案1】:

iOS8.1 sdk UIActionSheet 已弃用,您应该进行运行时检查以查看它是否可用并使用正确的类采取相应措施:

    if objc_getClass("UIAlertController") != nil 
// UIAlertController is available use it with style UIAlertControllerStyleActionSheet
     else 
// no UIAlertController use regular old action sheet
    

【讨论】:

【参考方案2】:

对于 iOS8 和更高版本,您必须迁移到 UIAlertController 以获取操作表和警报弹出窗口。

老实说,我发现新 API 更易于使用。还有一点 here (在 Swift 中,但在 Objective C 中并不难)。

【讨论】:

以上是关于iOS8 上的 UIActionSheet的主要内容,如果未能解决你的问题,请参考以下文章

iOS8 上的应用扩展限制

iOS8 上的 Instagram

iOS8+ UIScreen 上的 -nativeScale 和 -scale 有啥区别?

iOS8上的iPhone界面方向

iOS8上的tableview行高错误

IOS8上的HTML按钮元素单击失败