【发布时间】:2019-08-02 09:31:54
【问题描述】:
我正在添加新的 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 显示在场景中当前窗口的顶部。
【问题讨论】:
-
没有警告并且视觉调试器没有显示任何东西?
-
当我在 passcodeWindow.makeKeyAndVisible() 之后调试时,我使用 UIApplication.shared.topViewController() 检查顶部 viewController。它说顶视图控制器是 PasscodeViewController 所以它似乎没问题。在控制台中我得到 8 次:“2019-08-02 11:44:08.466223+0200 MyProject[866:191801] [] nw_connection_receive_internal_block_invoke [C6] 接收回复失败,错误为“操作已取消””
-
可视化调试器只显示主窗口,passcodeWindow 甚至不显示