iOS 9 上的 UIWindows 未调用 UIAlertAction 处理程序

UIAlertAction handler not called across UIWindows on iOS 9

我正在尝试使用专用 UIWindow 来展示 UIAlertControllers。一切都进行得很顺利,直到我意识到 UIAlertActions 上附加到 UIAlertControllers 的处理程序不会被触发,如果它们是由另一个 UIWindow.[=19= 上的控制器呈现的话。 ]

如果我从主 viewController 上的任何 viewController 显示 UIAlertController,则处理程序被触发,如果我从警报 window 的 rootViewController 显示它处理程序未被解雇。

关于我在这里可能遇到的情况有什么提示吗?谢谢!

编辑: Test Project 说明问题。

已解决: 我忘记在我的 alertWindowRootViewController 子类中覆盖 dismissViewControllerAnimated:completion: 时调用完成块。

我无法想象你为什么要这样做。但我的猜测是 Apple 正在优化 windows 上的一些不是关键 window.

的操作

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

原来是我忘记在重写 dismissViewControllerAnimated:completion 时调用完成块。呸!

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

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