【问题标题】:Xcode 8 UIImagePickerController frozenXcode 8 UIImagePickerController 冻结
【发布时间】:2016-10-31 13:01:02
【问题描述】:

我刚遇到这个问题。我可以像往常一样调用 UIImagePickerController,但是当我选择一个图像(拍摄照片或照片库)时,“使用照片”按钮和“重拍”按钮不起作用,并且 UI 只是冻结。

我做了一些调试,发现代码不会进入委托方法。

我没有更改任何关于 UIImagePickerController 的代码。之前一切正常。所以我想知道为什么会发生这种情况以及如何修复这个错误?

非常感谢!

代码如下:

 UIImagePickerController * imgPicker = [[UIImagePickerController alloc] init];
 [imgPicker setDelegate:self]
 [imgPicker setAllowsEditing:YES];
 [imgPicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
 [self.navigationController presentViewController:imgPicker animated:YES completion:^{

            }];

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(nullable NSDictionary<NSString *,id> *)editingInfo {

    [self dismissViewControllerAnimated:YES completion:^{
    }];
}

【问题讨论】:

  • 我也在控制台警告中得到这个:无法加载任何 Objective-C 类信息。这将显着降低可用类型信息的质量。对尚未渲染的视图进行快照会导致快照为空。确保您的视图在快照或屏幕更新后至少渲染一次。
  • 以防万一,检查你是否在目标 plist 文件中设置了 NSPhotoLibraryUsageDescription 字符串
  • 感谢您的评论,这将导致崩溃,就我而言,一切都卡在那里。
  • 有时我在控制台中得到这个 [通用] 创建一个未知类型的图像格式是一个错误,但不是每次都发生

标签: ios objective-c xcode uiimagepickercontroller


【解决方案1】:

我明白了。这是由于使用了错误的委托方法造成的。我使用的委托方法已已弃用

我们应该使用这个

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info;

并且图片信息在info字典中,可以通过这种方式获取图片

UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];

【讨论】:

    【解决方案2】:

    从带有 ios 10 的 xcode 8 开始,您必须向 info.plist 添加一些键值,以便使用 UIImagepicker 控制器访问照片

    密钥:隐私 - 照片库使用说明
    值:此应用需要访问照片库

    【讨论】:

      猜你喜欢
      • 2017-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-19
      • 2021-03-26
      • 1970-01-01
      • 1970-01-01
      • 2021-08-08
      相关资源
      最近更新 更多