【问题标题】:Warning: Attempt to present uiimagepickercontroller while a presentation is in progress警告:在演示过程中尝试演示 uiimagepickercontroller
【发布时间】:2013-10-15 19:38:48
【问题描述】:

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

- (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。这就是问题

【问题讨论】:

  • 请在您的问题中提供更多详细信息。
  • 文档告诉你使用dismissModalViewControllerAnimated:,你是alt+click接近答案。阅读文档。
  • @A-Live dismissModalViewControllerAnimated: 已弃用,取而代之的是 dismissViewControllerAnimated:completion:。他使用的是正确的。
  • @Kevin 该方法已被弃用,但文档清楚地告诉使用它。实际差异将是一个很好的问题。
  • @A-Live 你在看什么文档? UIViewController docs 明确声明“在 iOS 6.0 中已弃用。请使用 dismissViewControllerAnimated:completion: 代替。”

标签: ios uiimagepickercontroller


【解决方案1】:

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

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

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

希望这会对你有所帮助。

【讨论】:

  • ViewDidAppear 是问题所在。因为每次我向视图控制器添加新视图时,都会调用该方法。所以我添加了一个 BOOL firstTimeRun 来解决这个问题。
  • 在这里完成解决方案,约翰的回答:stackoverflow.com/questions/14453001/…
【解决方案2】:

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

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

在动画完成之前你的下面的方法被调用

imagePickerControllerDidCancel

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

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

注意动画:以上没有。

【讨论】:

  • 之前介绍的唯一VC就是这个UIImagePickerController。在选择器控制器中单击返回后会显示警告。 @MSK
  • 向我们展示您展示 UIImagePickerController 的代码以及其他一些代码。
猜你喜欢
  • 2015-12-04
  • 1970-01-01
  • 2012-12-03
  • 2012-11-18
  • 1970-01-01
  • 2014-04-24
  • 1970-01-01
  • 2014-06-12
  • 2013-11-03
相关资源
最近更新 更多