对于我正在开发的应用程序,我实现了一个锁定屏幕,允许用户通过手动引脚或触摸/脸ID解锁应用程序。
在正常使用期间,一切正常。
然而,我需要显示锁定屏幕时,应用程序恢复从背景,甚至在任务开关,以避免“窥视”的内容,而没有正确解锁。
正如苹果在这个(旧的) 文章中推荐的那样,我在文章中展示了锁视图控制器
func applicationDidEnterBackground(_ application: UIApplication) {
let lockVC = LoginViewController()
lockVC.loginType = LoginViewController.LoginType.resumeApp
if let topViewController = UIApplication.topViewController() {
topViewController.present(lockVC, animated: false, completion: nil)
}
}
其中,topViewControler是确定最顶层视图控制器:获得最高的UIViewController的有用扩展。
lockVC.loginType = ..。就是让ViewController知道我需要什么类型的登录,并自定义它的视图。
我得到的结果有点奇怪,无论是在模拟器上还是在实际设备上:
我想我错过了一些重要的东西。但没有发现其他线索。
没有一个现成的锁定屏幕解决方案提供了背景/taskSwicth/恢复案例的例子)。
请注意,如果我使用上面提到的扩展来显示最上面的视图控制器,或者我只是尝试通过
self.window?.rootViewController?.present(lockVC, animated: false)
(我认为这是错误的,但无论如何都试过了)
任何帮助都会被接受
发布于 2018-04-28 11:26:52
解决了,多亏这个帖子。显然,我太天真了,试图用它的对象实例来呈现一个视图控制器。
如果我用
let lockVC = topViewController.storyboard?.instantiateViewController(withIdentifier: "IDLoginViewController") as! LoginViewController
一切工作,锁定屏幕也显示在任务切换,不需要模糊!
https://stackoverflow.com/questions/50017380
复制相似问题