Open lutluthfi opened 3 years ago
Hi, I can't open the ImagePicker for the second time. After looking into the code, here are what I got:
I got the observer will emit onError when the app did cancel the Image Picker, so it will emit onDisposed also.
onError
onDisposed
open func imagePickerControllerDidCancel(_ picker: UIImagePickerController) { dismiss(picker) if let action = currentAction { switch action { case .photo(let observer): observer.on(.error(RxMediaPickerError.canceled)) case .video(let observer, _): observer.on(.error(RxMediaPickerError.canceled)) } } }
I got the observer will emit onComplete when the app finishes pick the image, it will emit onDisposed also.
onComplete
func processPhoto(info: [UIImagePickerController.InfoKey: Any], observer: AnyObserver<(UIImage, UIImage?)>) { guard let image = info[UIImagePickerController.InfoKey.originalImage] as? UIImage else { observer.on(.error(RxMediaPickerError.generalError)) return } let editedImage = info[UIImagePickerController.InfoKey.editedImage] as? UIImage observer.onNext((image, editedImage)) observer.onCompleted() }
That's why I can't open the ImagePicker for the second time. So, these are what I suggest:
Only call dismiss(picker) inside func imagePickerControllerDidCancel(_ picker: UIImagePickerController)
dismiss(picker)
func imagePickerControllerDidCancel(_ picker: UIImagePickerController)
open func imagePickerControllerDidCancel(_ picker: UIImagePickerController) { dismiss(picker) }
Call onComplete after picking the image is not necessary
func processPhoto(info: [UIImagePickerController.InfoKey: Any], observer: AnyObserver<(UIImage, UIImage?)>) { guard let image = info[UIImagePickerController.InfoKey.originalImage] as? UIImage else { observer.on(.error(RxMediaPickerError.generalError)) return } let editedImage = info[UIImagePickerController.InfoKey.editedImage] as? UIImage observer.onNext((image, editedImage)) }
Hi, I can't open the ImagePicker for the second time. After looking into the code, here are what I got:
I got the observer will emit
onError
when the app did cancel the Image Picker, so it will emitonDisposed
also.I got the observer will emit
onComplete
when the app finishes pick the image, it will emitonDisposed
also.That's why I can't open the ImagePicker for the second time. So, these are what I suggest:
Only call
dismiss(picker)
insidefunc imagePickerControllerDidCancel(_ picker: UIImagePickerController)
Call
onComplete
after picking the image is not necessary