UIActionSheet和UIAlertController - iPad的区别

3

我们在iOS8中是否必须使用UIAlertController?还是可以继续使用UIActionSheet?

我不想为了iOS 8的兼容性而对我们的代码进行大规模更改,但当在iPad上使用UIActionSheet时,我遇到了几个问题。

例如,当使用UIActionSheet时,我会遇到以下异常:

UIPopoverPresentationController (<_UIAlertControllerActionSheetRegularPresentationController: 0x7c57bf90>) should have a non-nil sourceView or barButtonItem set before the presentation occurs.

我知道使用新的UIAlertController更好,但是是否有任何解决方法可以继续使用UIActionSheet?

另外,在UIActionSheet实际显示的地方(没有例外),它包含一个箭头+它不像以前(iOS7)那样居中 - 我正在使用showInView(也尝试过使用showFromRect,但结果相同)。


你是否在iPad上使用弹出窗口来呈现UIAlertController? - Moon Cat
2
我仍然不想迁移到新的UIAlertController,我正在使用UIActionSheet。 - Tomer Peled
1
我在我们的应用程序中遇到了同样的问题。UIActionSheet 在 iOS 8 中似乎出现了故障。不幸的是,UIAlertController 的 API 非常不同,因此编写支持两个操作系统版本的代码非常痛苦。 - n8gray
1
我通过添加UIActionSheet类别找到了解决方案。请阅读我的问题,我在问题本身中写下了解决方案,https://dev59.com/4YDba4cB1Zd3GeqPJ-F8 - Jageen
1个回答

0
从文档中可以清楚地看到,UIActionSheet已经被弃用。这意味着你仍然可以使用它,但在未来可能会失败或完全删除。
我强烈建议你更新到UIAlertController。
在iPad上收到的异常很明显。由于UIAlertController与样式actionSheet需要sourceView(实际控制器将被呈现的视图)作为其不再是全屏幕(因为它在iPhone上)的一部分。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接