【发布时间】:2018-09-21 15:39:11
【问题描述】:
我遇到了 UIImagePickerController 的问题。我希望能够打开照片库并选择一张图片,当我这样做时,我收到以下错误
[discovery] errors encountered while discovering extensions: Error Domain=PlugInKit Code=13 "query cancelled" UserInfo={NSLocalizedDescription=query cancelled}`
我认为这可能是权限错误,因为我错误地没有在我的 plist 中添加一行来访问照片,所以我添加了访问照片库的条目:
Privacy - Photo library Usage Description,类型为string,值设置为photo use
当我尝试访问照片时,仍然没有提示获得访问照片的权限。
为了尽量减少引起问题的任何其他问题,我创建了一个新项目,它只有一个视图控制器和 plist 中的上述条目,下面显示了此类中的唯一代码
class ViewController: UIViewController, UINavigationControllerDelegate, UIImagePickerControllerDelegate
{
var mImagePicker:UIImagePickerController?
override func viewDidLoad()
{
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
@IBAction func tapped(_ sender: Any)
{
// Pick an image from the photo library
if UIImagePickerController.isSourceTypeAvailable(.photoLibrary)
{
mImagePicker = UIImagePickerController()
mImagePicker!.delegate = self
mImagePicker!.sourceType = .photoLibrary;
mImagePicker!.allowsEditing = false
self.present(mImagePicker!, animated: true, completion: nil)
}
}
}
当我点击按钮时,我没有看到权限提示,照片库只是出现,当我选择一张照片时,我收到上面显示的错误?我在这里缺少什么吗?
我在 iPhone X 上运行 iOS 12,在最新版 Mojave beta 上运行 Xcode 10.0
【问题讨论】:
-
作为注释,如果我添加用于相机访问的 plist 条目并使用 UIImagePickerController 打开相机,它会要求相机许可,这就是为什么我对这个不要求照片许可感到如此困惑的原因跨度>
-
你实现了uiimagepickercontroller的代理功能吗?
-
是的,我有,我有 didFinishPickingMediaWithInfo 函数,但是在手动请求权限后,问题实际上似乎在于该函数中 UIImagePickerController 的解除,但它应该仍然只是请求自己的权限正如相机所做的那样,我猜这个问题仍然存在,但错误本身是由于关闭视图
-
请在您的问题中添加代表代码。您可以使用 didfailpickingmedia 委托并尝试打印错误。
-
@AngryDuck 你添加了
Required device capabilities的video-camera的项目吗?我认为需要添加那个和Privacy...。我不确定它是否能解决问题。
标签: ios swift uiimagepickercontroller