我有一个应用程序,可以让你用 iPhone 相机拍照。一切都像魅力一样,但是在碰巧没有足够可用存储空间的新设备上进行测试时,相机应用程序并没有关闭。
所以基本上我用源相机打开图像选择器,我得到一个弹出窗口,上面写着“没有足够的可用存储空间来拍照......”然后当我按下确定时,我在相机应用程序中,快门关闭,“拍照”和“取消”按钮都变灰了。从这一点开始,我唯一能做的就是杀死应用程序,因为没有办法离开这个屏幕。
在我的代码中,我用以下方式调用相机:
UIImagePickerController * photoPicker= [[UIImagePickerController alloc] init];
photoPicker.delegate = self;
photoPicker.sourceType = UIImagePickerControllerSourceTypeCamera;
if ([UIImagePickerController isSourceTypeAvailable:photoPicker.sourceType]) {
[self presentModalViewController:photoPicker animated:YES];
}
调用它的对象当然是 UIImagePickerControllerDelegate 并且我实现了两个委托方法(都正确响应成功和取消事件):
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info;
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker;
这种“没有可用空间”行为不属于任何委托方法,因此我无法以编程方式关闭相机应用程序。
有什么想法吗?
编辑:
当尝试在相机不可用的模拟器中运行应用程序时,我注意到应用程序崩溃,因为该源不可用。我发现即使在调用控制器之前,简单地将不可用的 sourceType 分配给 photoPicker,也会使应用程序崩溃,因此我将代码更改为以下内容:
UIImagePickerController * photoPicker= [[UIImagePickerController alloc] init];
photoPicker.delegate = self;
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
photoPicker.sourceType = UIImagePickerControllerSourceTypeCamera;
}else{
return;
}
[self presentModalViewController:photoPicker animated:YES];
这仍然不能解决我的问题,但这是一个有趣的发现。