如何处理iOS系统警报消息?

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

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

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


听起来就像你的设备内存不足,系统发送了很多“内存不足”的通知,你的应用也有一个。 结果你的应用程序发布了UIViewController ,它最初启动了UIImagePickerController。

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

你可以通过在每个UIViewController中实现didReceiveMemoryWarning方法来检查这种情况,如果它被调用,则会记录下来:

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

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


这听起来像是iOS中的一个bug,你应该在这里提供一个雷达。

链接地址: http://www.djcxy.com/p/11727.html

上一篇: How to handle a system alert message for iOS?

下一篇: Maximum .NET version for Coldfusion 8 interop?