Search code examples
iosobjective-cuiimagepickercontroller

Dismiss UIImagePickerController


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


Solution

  • 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];
    }