UIImagePickerController显示最后拍摄的照片而不是相机输入

时间:2013-11-06 15:13:05

标签: ios ipad camera uiimagepickercontroller

我的应用程序中有一个奇怪的行为。 为了拍照,我使用以下漂亮的标准代码来显示UIImagePickerController:

UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.allowsEditing = NO;
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
[self presentViewController:picker animated:YES completion:nil];

第一次点击调用此操作的按钮时,它完全正常。当我再次点击该按钮时,奇怪的行为开始了。 UIImagePickerController再次启动但它不再显示来自摄像机的输入。它显示了我拍摄的最后一张照片。

该州的更多细节:

  • 点击图像会显示自动对焦的黄色方块。 (它实际上用于正确聚焦相机)
  • 当我点按ImageCapture按钮时 - > 正确图像被拍摄并显示在屏幕上。
  • 如果我拍照并按“重拍”,则会将常规相机图像显示为输入。

更奇怪:它与我正在使用的iPad无关。创建一个新的示例应用程序,只有从上面调用代码的按钮一切都很好。

我认为它与应用程序的配置有关。因此,我检查了所有内容,但未找到可能导致此问题的任何差异。

提前感谢任何建议!

更新: 我实现了UIImagePickerControllerDelegate以解散UIImagePickerController。

2 个答案:

答案 0 :(得分:0)

在阅读UIImagePickerController doc here上的Apple文档时,它指出“当用户点击按钮以选择新捕获或保存的图像或电影,或取消操作时,使用关闭图像选择器您的代理对象。对于新捕获的媒体,您的代表可以将其保存到设备上的相机胶卷。对于以前保存的媒体,您的代表可以根据您应用的目的使用图像数据。 “也许你需要实现UIImagePickerContriollerDelegate协议方法并正确地解除现有的UIImagePickerController对象。见UIImagePickerControllerDelegate

答案 1 :(得分:0)

我终于找到了问题:它是UIViewController上的一个类别,我在项目的其他地方使用过。当我用我的项目编译它时,UIImagePickerController表现得很奇怪。所以我想我以某种方式设法使用了一个方法名称,该名称也由UIImagePickerController在内部使用。它仍然让我感到困惑,因为根本没有在UIImagePickerController上使用该类别。