【问题标题】:How to handle a system alert message for iOS?如何处理 iOS 的系统警报消息?
【发布时间】:2013-01-17 17:45:18
【问题描述】:

我有一个应用程序,我正在使用 UIImagePickerController 使用本机摄像头来单击图片,但是当设备上的照片库已满时。我收到一条警告消息,上面写着“无法拍照 - 没有足够的可用存储空间来拍照。您可以在设置中管理您的存储空间”。我有两个选项可以单击“完成”按钮或“设置”按钮。单击其中任何一个都不会执行任何操作,并且应用程序会完全冻结。

这是我从控制台日志中得到的信息

Not enough space to take a picture. Available space is 0

选择器的代码

UIImagePickerController *mediaPicker = [[UIImagePickerController alloc] init];
mediaPicker.sourceType = UIImagePickerControllerSourceTypeCamera;
mediaPicker.delegate=self;
mediaPicker.sourceType=UIImagePickerControllerSourceTypeCamera;
[self presentModalViewController:mediaPicker animated:YES];

我已经实现并尝试了所有的委托,它没有调用任何委托。

我有什么方法可以实现一些东西,我可以使用侦听器来检测何时发生此错误并将用户带回上一个屏幕?

【问题讨论】:

  • 如果你这样做会发生什么:[UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]?

标签: iphone ios delegates uiimagepickercontroller nsnotificationcenter


【解决方案1】:

听起来您的设备内存不足,系统发送了大量“内存不足”通知,而您的应用也收到了通知。结果您的应用发布了 UIViewController,它最初启动了 UIImagePickerController。

现在,当您使用“完成/设置”按钮关闭 imagePicker 时,控制权会返回给您的应用。旧的 UIViewController 不再存在,在这种情况下,您还没有实现代码从头开始重新创建它。该设备看起来像是被冻结了,但这仅仅是因为您的应用程序没有重绘 UI。否则应用程序工作正常。

您可以通过在每个 UIViewController 中实现 didReceiveMemoryWarning 方法并记录(如果它被调用)来检查这种情况:

- (void)didReceiveMemoryWarning
{
    NSLog(@"%@", [self description]);
    [super didReceiveMemoryWarning];
}

我最喜欢的错误之一。很容易错过:)

【讨论】:

    【解决方案2】:

    这听起来像是 iOS 中的一个错误。

    您应该在https://feedbackassistant.apple.com/ 提交反馈。

    【讨论】:

      猜你喜欢
      • 2015-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多