【问题标题】:UIImagePickerController not working in SwiftUIImagePickerController 在 Swift 中不起作用
【发布时间】:2018-10-11 16:00:49
【问题描述】:

当我通过 UIImagePickerController 选择图像时,我在 xCode 中得到以下输出:

发现扩展时遇到[discovery] 错误:Error Domain=PlugInKit Code=13 "query cancelled" UserInfo={NSLocalizedDescription=query cancelled}

这是我的代码:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    let image = info[UIImagePickerControllerOriginalImage] as! UIImage
    imagePicked = image
    
    dismiss(animated: true, completion: nil)
    performSegue(withIdentifier: "showImage", sender: self)
}

ViewController 类的声明应该是这样的:

class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {

let imagePickerController = UIImagePickerController()
var imagePicked = UIImage()

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    imagePickerController.delegate = self

}

我用一个按钮打开ImagePicker:

@IBAction func chooseImageBtn(_ sender: Any) {
    imagePickerController.sourceType = .photoLibrary
    self.present(imagePickerController, animated: true, completion: nil)
    
}

当我在模拟器中启动应用程序时,我可以单击按钮,然后选择一个图像,但随后选择器关闭,并且此消息显示在 Xcode 中:

2018-05-01 16:50:01.214450+0200 Awesome Name[57575:12752181] [MC] 从私人有效用户设置中读取。

2018-05-01 16:50:03.740711+0200 Awesome Name[57575:12752241] [发现] 发现扩展时遇到的错误:错误域 = PlugInKit 代码 = 13“查询已取消”用户信息 = {NSLocalizedDescription = 查询取消}

我已经做了一些研究,但没有任何效果。 ImagePicker 的代理设置为self,我也尝试在func imagePickerController(_ picker: 之前添加@objc,但这并没有解决问题。

我还能尝试什么来显示所选图像?

【问题讨论】:

  • 您是否向PHPhotoLibrary.requestAuthorization 请求了照片库的权限?
  • @Kamran 我已将具有值的 Privacy - Photo Library Usage Description 键添加到我的 info.plist
  • 是的,但您还必须在访问之前调用授权。你可以在这里查看如何做到这一点stackoverflow.com/questions/44465904
  • 我实现了 requestAuthorization 方法,现在它要求访问照片。单击确定后,ImagePicker 再次打开,它仍然产生与我的问题相同的输出,并且没有任何反应

标签: ios swift uiimagepickercontroller


【解决方案1】:

尝试删除performeSegue函数,如果你真的需要使用它,只需将它添加到dismiss函数的completion即可。

【讨论】:

    猜你喜欢
    • 2018-10-05
    • 2014-01-28
    • 2013-12-04
    • 1970-01-01
    • 1970-01-01
    • 2017-03-17
    • 2014-03-06
    • 2014-11-01
    • 1970-01-01
    相关资源
    最近更新 更多