3

我的应用程序中有一个奇怪的行为。为了拍照,我使用以下非常标准的代码来显示 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。

4

2 回答 2

0

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

于 2013-11-06T15:48:01.477 回答
0

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

于 2013-11-15T12:29:55.730 回答