web-dev-qa-db-ja.com

iOS13のシーンに新しいUIWindowを追加する

アプリがフォアグラウンドに入ったときにパスコードビューコントローラーを表示する新しいUIWindowを追加しています。

AppDelegateのiOS 13以前は、var passcodeWindow = UIWindow(frame: UIScreen.main.bounds)プロパティがあり、rootViewControllerはパスコードビューコントローラーで、applicationWillEnterForegroundメソッドではpasscodeWindow.makeKeyAndVisible()を使用して配置していました頂上で。

IOS 13でパスコード機能を実装したいのですが、このアプローチには問題があります。 SceneDelegateのsceneWillEnterForegroundメソッドに移動しましたが、このシーンでは実際のウィンドウの上にpasscodeWindowを表示できないようです。

AppDelegateとまったく同じように実行し、passcodeWindowは表示されません。

AppDelegateとSceneDelegateのsceneWillEnterForegroundで行う方法:

passcodeWindow.rootViewController = passcodeViewController(type: .unlock)
passcodeWindow.makeKeyAndVisible()

passcodeWindowがシーンの現在のウィンドウの上部に表示されることを期待しています。

8
Kamil Chmiel

あなたはこれを試すことができます:

if #available(iOS 13.0, *) {
    if let currentWindowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene {
        passcodeWindow.windowScene = currentWindowScene
    }
}
4
RichardLiu