当应用程序进入前台时,我将添加新的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
    }
}

07-26 00:50