Некоторые примечания к моему поиску UIAlertView в иерархии представлений:
Я пытался рекурсивно просмотреть все [UIApplication sharedApplication].windows
представления, но ничего не смог найти.
Свойство windows
документа UIApplication
гласит следующее:
Это свойство содержит объекты UIWindow, в настоящее время связанные с
приложение. Этот список не включает окна, созданные и управляемые
system , например, окно для отображения строки состояния.
Так что это заставило меня осознать, что UIWindow
, где может находиться UIAlertView
, даже не представлен нам.
ОДНАКО, есть также свойство на UIApplication
, которое называется keyWindow
. Пройдя через это, я нашел частные классы, которые составляли бы представление с предупреждением:
В iOS 7: _UIModalItemHostingWindow
, _UIModalItemAlertContentView
, _UIBackdropEffectView
и т. Д.
В iOS 8: _UIAlertControllerActionView
, _UIAlertControllerShadowedScrollView
, _UIBackdropView
и т. Д.
Я не смог найти UIAlertView
, который я представил, а скорее набор классов, которые составляют его внутренне. Таким образом, чтобы ответить на первоначальный вопрос , вы, вероятно, можете использовать свойство keyWindow
и посмотреть, заметили ли вы эти классы, но ваше приложение может быть отклонено за попытку проверки на наличие закрытых классов.
Для людей, использующих более новую версию, UIAlertController
, доступную для iOS 8, может получить ссылку на нее, используя:
[UIApplication sharedApplication].keyWindow.rootViewController.presentedViewController
.