从委托函数触发时,UIImagePickerController不会出现

时间:2018-01-06 10:16:21

标签: ios swift

我有一个奇怪的情况,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。

有什么想法在这里发生了什么?非常感谢提前!

0 个答案:

没有答案