当应用程序进入前台时,我将添加新的UIWindow以显示密码 View Controller 。
在iOS 13之前的AppDelegate中,我拥有var passcodeWindow = UIWindow(frame: UIScreen.main.bounds)
属性,其中rootViewController
是密码 View Controller ,在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
}
}