История:
Мне нужно программно отклонить 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
, тогда я запутался, не следует ли отклонение представленного контроллера очищать его окно? Или это потому, что оно закрывается только тогда, когда приложение переходит в фоновый режим, поэтому иерархия окон не находится в нормальном состоянии, поэтому все идет наперекосяк?
Кто-нибудь может высказать свое мнение?
Спасибо!