【发布时间】:2014-10-30 01:39:25
【问题描述】:
故事:
当应用程序进入后台时,我需要以编程方式关闭 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,然后我很困惑,不应该关闭一个呈现的控制器来清理它的窗口吗?或者,是因为它只是在应用程序进入后台时被关闭,所以窗口层次结构不处于正常状态,因此事情搞砸了?
谁能给点意见?
谢谢!
【问题讨论】:
-
为什么不在 UIAlertController 上使用dismissViewController?
-
谢谢@sha 我试过了,但是没用。
-
如果这不起作用,就会发生其他奇怪的事情。
标签: ios objective-c uiactionsheet uialertcontroller