在iOS 9上没有在UIWindows上调用UIAlertAction处理程序

时间:2015-10-07 22:34:22

标签: ios handler uialertcontroller uiwindow uialertaction

我正在尝试使用专用UIWindow来展示UIAlertControllers。一切进展顺利,直到我意识到附加到UIAlertActions的{​​{1}}上的处理程序如果被另一个UIAlertControllers上的控制器呈现则没有被解雇。

如果我在主窗口的任何viewController中显示UIWindow,则会触发处理程序,如果我从警报窗口的rootViewController中显示处理程序,则不会触发处理程序。

有关我在这里可能遇到的任何提示吗?谢谢!

修改: Test Project说明问题。

已解决:我忘记在我的alertWindowRootViewController子类中覆盖UIAlertController中的完成块。

2 个答案:

答案 0 :(得分:2)

我无法想象你为什么要这样做。但我的猜测是,Apple正在优化一些不是关键窗口的窗口上的操作。

无论是什么,简短的回答是你不应该这样做。

答案 1 :(得分:0)

事实证明,我忘记在覆盖dismissViewControllerAnimated:completion时调用完成块。卫生署!

我已更新我的Test Project以包含此修复程序,希望这对其他人有价值。

我确实比Dylan Betterman's Solution更喜欢我的解决方案,因为我的周围有永久性窗口,与UIAlertController的生命周期无关。这意味着与Dylan的解决方案不同,您可以保留警报控制器的强大指针。