アプリがフォアグラウンドに入ったときにパスコードビューコントローラーを表示する新しい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
がシーンの現在のウィンドウの上部に表示されることを期待しています。
あなたはこれを試すことができます:
if #available(iOS 13.0, *) {
if let currentWindowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene {
passcodeWindow.windowScene = currentWindowScene
}
}