在iOS13上向场景添加新的UIWindow

时间:2019-08-02 09:31:54

标签: ios swift xcode ios13

我正在添加新的UIWindow以在应用程序进入前台时显示密码视图控制器。

在AppDelegate的iOS 13之前,我拥有属性var passcodeWindow = UIWindow(frame: UIScreen.main.bounds),其中我的rootViewController是密码视图控制器,并且在applicationWillEnterForeground方法中,我正在做passcodeWindow.makeKeyAndVisible()将其放置在顶部

现在,当我想在iOS 13中实现密码功能时,这种方法就会出现问题。我将其移至SceneDelegate中的sceneWillEnterForeground方法,但似乎无法在此场景中实际窗口的顶部显示passcodeWindow

我执行的操作与AppDelegate中的操作完全相同,并且未显示passcodeWindow

我在sceneWillEnterForeground中的AppDelegate和SceneDelegate中的操作方式:

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

我希望passcodeWindow显示在场景中当前窗口的顶部。

1 个答案:

答案 0 :(得分:2)

您可以尝试以下方法:

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