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