7

我有一个应用程序,我正在使用 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];

我已经实现并尝试了所有代表,并且它没有调用任何代表。

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

4

2 回答 2

2

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

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

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

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

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

于 2013-02-06T16:51:58.407 回答
1

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

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

于 2013-01-17T18:23:55.373 回答