0

Я пытаюсь отобразить экран кода доступа, который появляется после X бездействия. Я использую presentViewController: анимированный: завершение: на контроллере корневого представления, и он работает, как ожидалось, за исключением случаев, когда popover уже отображается. На экране представленного экрана доступа отображается надпись, отображаемая с помощью кнопки на панели.Предотвращение появления всплывающих окон из представленных представлений

Есть ли способ убрать или скрыть все видимые popovers при представлении контроллера вида?

ответ

1

Создайте и добавьте второе окно над первым. Представьте экран кода доступа во втором окне. Это позволит ему отображаться над любыми видами из первого окна. Когда вы отклоняете экран кода доступа, обязательно удалите новое окно и снова сделайте 1-й ключ.

+0

Как бы добавить это окно? Свойство окна UIApplication выглядит только для чтения. – livings124

+0

Похоже, makeKeyAndVisible делает это автоматически. Это похоже на работу - единственная проблема в том, что кнопки в контроллере представления, которые я установил как rootViewController, не реагируют на касание (и я явно устанавливаю enableUserInteraction). – livings124

+0

Решил ответить на проблему касания, явно задав размер окна. Благодаря! – livings124

1

У вас есть ссылка на popover? Затем вы можете позвонить по телефону

[popover dismissPopoverAnimated:NO]; 

, когда вы идете в магазин наложения на проезд.

EDIT

Перебор подвидов и увидеть, если вы можете dimiss в поповер. Я действительно рекомендую попробовать найти другой способ делать что-то, потому что это просто нехорошо. Но он должен работать (непроверенный).

for (UIView* view in self.view.subviews) { 
    if([view respondsToSelector:@selector(dismissPopoverAnimated:)]){ 
     [(UIPopoverController*)view dismissPopoverAnimated:NO]; 
    } 
} 
+0

Я надеялся сделать это более общим. Есть много потенциальных взглядов с множеством несвязанных popovers. – livings124

+0

Существует очень противный способ сделать это, перейдя через все подпункты и увидев, реагирует ли он на ignopopoverAnimated :. См. Править. – Josh

+0

Я понял, что это будет путь. Я посмотрел на цикл через контроллеры дочерних представлений контроллеров представления, пока не нашел UIPopoverController - кажется, что контроллер popover имеет родительский контроллер представления, но тот же контроллер представления не имеет UIPopoverController в качестве контроллера детского представления. Любая идея, почему это было бы? – livings124

1

NSNotification s являются хорошим инструментом для решения этой проблемы. У вас есть все ваши взгляды или контроллеры, которые представляют popovers, прослушивают уведомление с именем, скажем, WillPresentPasscodeScreen, и внедряют метод, который отклоняет popover при входе уведомления. Затем перед тем, как представить свой код VC, отправьте сообщение WillPresentPasscodeScreen - не более popovers, независимо от того, где вы находитесь в приложении.

 Смежные вопросы

  • Нет связанных вопросов^_^