关闭UIImagePickerController

use*_*443 3 objective-c uiimagepickercontroller ios

我已经尝试过解除UIImagePickerController的每一个变种都没有运气.我究竟做错了什么.

- (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
}
Run Code Online (Sandbox Code Playgroud)

我试图从父,祖父母,navigationController和根控制器呈现选择器,没有任何作用.我做什么我不能解雇ImagePickerController.

请注意每次都会调用log语句.

干杯

Div*_*vyu 9

试试这一行.它可能适合你.

[self.picker dismissModalViewControllerAnimated:NO];
Run Code Online (Sandbox Code Playgroud)

对于iOS 6及更高版本,请使用此功能

[self.picker dismissViewControllerAnimated:NO completion:nil];
Run Code Online (Sandbox Code Playgroud)

也可以使用此代码显示您的选择器控制器

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];
}
Run Code Online (Sandbox Code Playgroud)


Tom*_*voy 6

你在运行iOS 6吗?如果是这样,presentModalViewController:则弃用并可能导致一些意外结果.请尝试使用presentViewController:animated:completion:.

但从技术上讲,这就是你应该做的所有事情:

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)imagePicker
{
   [imagePicker dismissViewControllerAnimated:NO completion:nil];//Or call YES if you want the nice dismissal animation
}
Run Code Online (Sandbox Code Playgroud)


Zai*_*han 5

对于Swift,请使用以下命令:

func imagePickerControllerDidCancel(picker: UIImagePickerController!) {
    picker.dismissViewControllerAnimated(true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)