3

关闭相机后。它给了我这个警告:尝试在演示过程中进行演示!

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
    [self dismissViewControllerAnimated:YES completion:nil];
}

我不知道这是否是一个大问题。

更多代码:

- (void) viewWillAppear:(BOOL)animated
{
    [self takePicture];
}


- (void) takePicture
{
    UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
        [imagePickerController setSourceType:UIImagePickerControllerSourceTypeCamera];
    } else
        [imagePickerController setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];

    imagePickerController.delegate = self;
    [self presentViewController:imagePickerController animated:YES completion:nil];
}


- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    [self dismissViewControllerAnimated:NO completion:nil];
}

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
    [self dismissViewControllerAnimated:NO completion:nil];
}

顺便说一句,“dismissModalViewController”已被弃用。

修复:一旦有新视图,就会调用 ViewWillAppear。那就是问题所在

4

2 回答 2

8

你不应该展示来自 viewWillAppear 的任何控制器,因为当前视图控制器的展示还没有完成。

从 viewDidAppear 调用 takePicture 因为 viewDidAppear 将在控制器的演示完成后被调用。

- (void)viewDidAppear:(BOOL)animated{
    [super viewDidAppear:animated];
    [self takePicture];
}

希望这会帮助你。

于 2013-10-24T10:42:53.687 回答
0

你可能已经展示了一些像这样的视图控制器

[self presentViewController:someVC animated:YES completion:nil];

并在动画完成之前调用您的以下方法

imagePickerControllerDidCancel

您可以通过将其更改为来检查它

[self presentViewController:someVC animated:NO completion:nil];

注意动画:以上没有。

于 2013-10-08T18:17:24.970 回答