Моя приложения application(_:didFinishLaunchingWithOptions:launchOptions:)
является создание overlay вроде этого:диалоговое окно отображается EKEventStore.authorizationStatus (для :), видимо, скрывается за накладкой
window.makeKeyAndVisible()
let launchStoryboard = UIStoryboard(name: "LaunchScreen", bundle: nil)
let overlayView = launchStoryboard.instantiateInitialViewController()!.view!
window.addSubview(overlayView)
первоначальный контроллер представления о приложении, как это определено в Main.storyboard
является чья первая вкладка UITabBarController
содержит UINavigationController
. viewDidLoad()
его контроллера корневого вида вызывает EKEventStore.authorizationStatus(for:)
.
На данный момент приложение похоже на киоски и только наложение видно. Когда я останавливаю приложение, появляется диалоговое окно, в котором спрашивается, будет ли доступно разрешение доступа к календарю. По-видимому, он был скрыт ниже наложения.
Как я могу убедиться, что диалоговое окно появляется в самой передней части экрана, чтобы пользователь получил возможность ответить на его фактический вопрос?
ОБНОВЛЕНИЕ Подробнее об общем контексте в ответ на вопросы: Причина для кода в делегате приложения заключается в том, что - если только это не произошло при предыдущем запуске - мне нужно запросить пользователя учетные данные сервера, получить данные с сервера и сохранить некоторые из этих данных в EKEvent
с. Оверлейные опоры, представляющие контроллер вида для получения учетных данных пользователя (см. here). Оверлей будет удален, когда данные будут получены с сервера. Вызов makeKeyAndVisible
необходим для получения UIApplication.shared.keyWindow
, чтобы получить стоимость, несмотря на ранний этап жизненного цикла приложения. Это значение требуется для представления указанного контроллера просмотра для получения учетных данных.
У вас есть этот контроллер представления таблиц в раскадровке LaunchScreen? Обычно он содержит только экран запуска (как следует из названия), а остальное будет в главной раскадровке ... Также вы пытались установить контрольную точку в своем контроллере просмотра, чтобы увидеть, даже если она туда попала? – kender
@kender Нет, контроллер представления вкладок не находится в раскадровке LaunchScreen, но в Main.storyboard (см. Править). – Drux
Какова причина для кода в вашем AppDelegate? Вы удаляете оверлей в любой точке? А что, если вы не сделаетеKeyAndVisible оверлейным окном? – kender