所以我注意到在iPad上的iOS8 beta 3(更新:在iOS 11.2中仍然会发生),当尝试从a的委托方法中呈现视图控制器时UIActionSheet
,“什么也没有发生”,并且日志消息输出到调试控制台,指出在转换警报控制器时尝试进行演示:
Warning: Attempt to present <UIViewController: 0x...> on <ViewController: 0x...> which is already presenting <UIAlertController: 0x...>
更新:从iOS 9 SDK开始,UIActionSheet
已弃用,因此不要期望对此问题进行修复。最好尽可能开始使用UIAlertController
。
问题似乎出在Apple转向UIAlertController
内部使用以实现警报视图和操作表的功能。这个问题主要在iPad和操作表上看到,因为在iPad上,操作表在指定的视图中以弹出窗口的形式显示,Apple所做的是遍历响应程序链,直到找到视图控制器并presentViewController:animated:completion:
通过内部调用UIAlertController
。在iPhone和带有警报视图的情况下,该问题不太明显,因为苹果实际上在其中创建了一个单独的窗口,一个空的视图控制器并UIAlertController
在其之上显示了内部控件,因此它似乎不会干扰其他显示。
我已打开此问题的错误报告:rdar:// 17742017。请复制它,并让Apple知道这是一个问题。
作为一种解决方法,我建议使用以下方法将演示文稿延迟到下一个运行循环:
dispatch_async(dispatch_get_main_queue(), ^ {
[self presentViewController:vc animated:YES completion:nil];
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句