故事:
当应用程序进入后台时,我需要以编程方式关闭 UIActionSheet,而我在 iOS 7 中所做的是遍历[UIApplication sharedApplication].windows
并找到类型为 的视图UIActionSheet
,然后将其关闭。它在 iOS 8 中不起作用。
背景:
在 iOS 8 中,UIAlertController
应该用于呈现警报或操作表,并且一个小实验表明它UIActionSheet
在内部使用以下实现UIAlertController
:
po [[UIApplication sharedApplication] keyWindow] <_UIAlertControllerShimPresenterWindow:
po [[[UIApplication sharedApplication] keyWindow] rootViewController] <_UIAlertShimPresentingViewController: 0x7faa0cf049f0>
po [[[[UIApplication sharedApplication] keyWindow] rootViewController] presentedViewController] <UIAlertController: 0x7faa0c8cb9e0>
哪个具有正确的标题、消息等。
混乱:
然后我添加了一些代码来解除控制器,它确实解除了它。但是,应用程序现在不响应任何用户交互,我发现关闭后keyWindow
仍然是_UIAlertControllerShimPresenterWindow
,然后我很困惑,不应该关闭呈现的控制器清理它的窗口吗?或者,是因为它只是在应用程序进入后台时被关闭,所以窗口层次结构不处于正常状态,因此事情搞砸了?
有人可以提供一些意见吗?
谢谢!