我有一个奇怪的情况,UIImagePickerController不会出现。
上下文:我使用UIImagePicker让用户从他们的照片中挑选个人资料图片。他们点击添加个人资料图片,最初触发模式,他们可以在使用他们的本地照片和他们的Facebook个人资料照片之间进行选择。
此模态委托回配置文件视图控制器,其中存在以下所有功能。模态激发didSelectProfilePhotoOption
- 在这种情况下使用.fromPhotos。
func didSelectProfilePhotoOption(photoSource: PhotoSource) {
switch photoSource {
case .fromFacebook:
useFacebookPhotoForProfile()
case .fromPhotos:
selectProfileImageFromPhotoLibrary()
}
}
这很重要,因为我尝试从视图控制器(而不是模态委托)触发selectProfileImageFromPhotoLibrary
并且每次都显示UIImagePickerController。
func selectProfileImageFromPhotoLibrary() {
let status = PHPhotoLibrary.authorizationStatus()
handleImageAuthStatus(status: status)
}
func handleImageAuthStatus(status: PHAuthorizationStatus) {
switch status {
case .authorized:
presentImagePicker()
case .denied:
//show an error message
case .notDetermined:
PHPhotoLibrary.requestAuthorization( { status in
self.handleImageAuthStatus(status: status)
})
case .restricted:
//show an error message
}
}
func presentImagePicker() {
let imagePicker = UIImagePickerController()
imagePicker.delegate = self
imagePicker.allowsEditing = false
imagePicker.sourceType = .photoLibrary
self.present(imagePicker, animated: true, completion: nil)
}
增加的奇怪之处在于,UIImagePickerController将在链接作为请求照片权限的一部分时显示。
所以在这种情况下:
didSelectProfilePhotoOption(photoSource: .fromPhotos)
>>> selectProfileImageFromPhotoLibrary
>>> handleImageAuthStatus(status: .notDetermined)
>> ;> (授予权限)>>> handleImageAuthStatus(status: .authorized)
...每次都会显示UIImagePickerController。
有什么想法在这里发生了什么?非常感谢提前!