swift 在设置中更新摄像机权限后,UIViewController关闭

dldeef67  于 2023-10-15  发布在  Swift
关注(0)|答案(2)|浏览(119)

即时通讯重定向用户设置,如果相机访问不允许和用户配置文件页面时,相机权限更改解散。

1.点击转到设置选项更改权限设置
1.相机权限值更改后
1.当点击上一个应用程序按钮(?)在状态栏上
1.当前UIViewController关闭,并转到上一个UIViewController,即rootViewController
如何防止这种情况发生?

x6h2sr28

x6h2sr281#

看看这个答案:让应用程序在检测到隐私设置更改时自行重启
应用程序重新启动,您无法阻止此操作。您可以保留和恢复状态:https://developer.apple.com/library/archive/featuredarticles/ViewControllerPGforiPhoneOS/PreservingandRestoringState.html

9njqaruj

9njqaruj2#

Swift 4.2

如果您的应用程序中有表单,并且您可能需要在应用程序中更改权限,则应该存储和恢复数据。因为您的应用可能会在权限更改(例如相机使用权限)后重新启动。

**第1步:**从情节提要上的Identity Inspector向UIViewController s添加恢复ID。
**第二步:**将这些方法添加到AppDelegate中

func application(_ application: UIApplication, shouldSaveApplicationState coder: NSCoder) -> Bool {
    return true
}

func application(_ application: UIApplication, shouldRestoreApplicationState coder: NSCoder) -> Bool {
    return true
}

**步骤3:**在UIViewController中复制这些方法。您的数据将以encodeRestorableState方式存储。并采用decodeRestorableState方法进行恢复。

override func encodeRestorableState(with coder: NSCoder) {
    coder.encode(self.myTextField.text ?? "", forKey: "myTextFieldRestorationKey")
    super.encodeRestorableState(with: coder)
}

override func decodeRestorableState(with coder: NSCoder) {
    if let txt = coder.decodeObject(forKey: "myTextFieldRestorationKey") as? String { self.myTextField.text = txt }
    super.decodeRestorableState(with: coder)
}

相关问题