Dismiss UIImagePickerController
14,440
Solution 1
Try this line. It might work for you.
[self.picker dismissModalViewControllerAnimated:NO];
And for iOS 6 and later use this
[self.picker dismissViewControllerAnimated:NO completion:nil];
Also use this code to present your picker controller
if ([self respondsToSelector:@selector(presentViewController:animated:completion:)]){
[self presentViewController:self.picker animated:YES completion:nil];
} else {
//To target iOS 5.0
[self presentModalViewController:self.picker animated:YES];
}
Solution 2
Are you running iOS 6? If so, presentModalViewController:
is deprecated and could be causing some unexpected results. Try using presentViewController:animated:completion:
instead.
But technically, here's all you should have to do:
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)imagePicker
{
[imagePicker dismissViewControllerAnimated:NO completion:nil];//Or call YES if you want the nice dismissal animation
}
Solution 3
For Swift use this:
func imagePickerControllerDidCancel(picker: UIImagePickerController!) {
picker.dismissViewControllerAnimated(true, completion: nil)
}
Solution 4
For Swift 4:
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
picker.dismiss(animated: true, completion: nil)
}
Author by
user346443
Updated on June 07, 2022Comments
-
user346443 almost 2 years
I have tried every variation of dismissing a UIImagePickerController with out any luck. What am i doing wrong.
- (IBAction)choosePhoto { self.picker = [[UIImagePickerController alloc] init]; self.picker.delegate = self; self.picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; [self presentModalViewController:self.picker animated:YES]; } - (void)imagePickerControllerDidCancel:(UIImagePickerController *)imagePicker { NSLog(@"dismiss image picker"); [self dismissModalViewControllerAnimated:NO]; [[self.picker parentViewController] dismissModalViewControllerAnimated:NO]; [self.presentedViewController dismissModalViewControllerAnimated:NO]; [self.presentingViewController dismissModalViewControllerAnimated:NO]; // And every other way i could think of } - (void)imagePickerController:(UIImagePickerController *)imagePicker didFinishPickingMediaWithInfo:(NSDictionary *)info { .. same stuff here }
I have tried to present the picker from the parent, grandparent, navigationController and root controller and nothing works. What ever i do i cant dismiss the ImagePickerController.
Please note the log statement gets called every time.
Cheers
-
Mohammad Zaid Pathan over 4 yearsOne should update already provided answer, instead of adding new one.