繁体   English   中英

UIImagePickerController 只能在主线程中使用 | 应用崩溃

[英]UIImagePickerController must be used from main thread only | app crash

大家好,我正在iOS 14中实施UIImagePickerController 当用户选择相机时,当用户同意使用相机时我的应用程序崩溃,在 xcode 上以紫色返回此错误

- [UIImagePickerController init] must be used from main thread only

我怎么解决这个问题? 感谢大家的建议

private func cameraAuth(auth sourceType: UIImagePickerController.SourceType) {
    switch AVCaptureDevice.authorizationStatus(for: .video) {
    case .denied: imagePickerAuthDenied()
    case .restricted: imagePickerAuthRestricted()
    case .authorized: showImagePicker(sourceType: sourceType)
   
    case .notDetermined:

        AVCaptureDevice.requestAccess(for: .video) { (success) in
            if success { self.showImagePicker(sourceType: sourceType) }
            else { self.imagePickerAuthDenied() }
        }
        
    default : print("Default Switch Camera Auth")
    }
}

private func showImagePicker(sourceType: UIImagePickerController.SourceType) {
   
    let imagePickerController = UIImagePickerController()
    imagePickerController.delegate = self
    imagePickerController.sourceType = sourceType
    imagePickerController.allowsEditing = true
    present(imagePickerController, animated: true, completion: nil)
}

在此处输入图像描述

您需要在DispatchQueue.main.async中将代码包装在authorizationStatus/AVCaptureDevice.requestAccess(for: .video) { (success) in

AVCaptureDevice.authorizationStatus(for: .video) {
   DispatchQueue.main.async {
     ///
   }
}

AVCaptureDevice.requestAccess(for: .video) { (success) in 
   DispatchQueue.main.async {
     ///
   }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM