9

我正在创建一个 iPhone 应用程序,它使用 UIImagePickerController 让用户从照片库中选择图像。

选择器允许我从照片库中成功获取图像:

  • iPhone 模拟器
  • 运行 5.0.1 的真实 iPhone
  • 真正的 iPad 运行 5.0.1
  • 真正的 iPad 运行 5.1
  • iPad模拟器 v4.3

但是,如果我在以下位置测试此应用程序,则选择器无法获取图像:

  • iPad模拟器 v5.0
  • iPad模拟器 v5.1

在这2个测试环境中,图像选择器成功出现。当我点击我需要的图像时,它只是没有通过方法“ - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info ”从“ [info objectForKey:UIImagePickerControllerOriginalImage] ”给我任何东西

“信息”字典是这样的:

{
    UIImagePickerControllerMediaType = "public.image";
    UIImagePickerControllerReferenceURL = "assets-library://asset/asset.PNG?id=7632C58F-AF74-4EEB-AF17-891E35949CBA&ext=PNG";
}

在前 5 个测试环境中,“信息”是这样的:

{
    UIImagePickerControllerMediaType = "public.image";
    UIImagePickerControllerOriginalImage = "<UIImage: 0x6bb7810>";
    UIImagePickerControllerReferenceURL = "assets-library://asset/asset.PNG?id=7632C58F-AF74-4EEB-AF17-891E35949CBA&ext=PNG";
}

您可以看到 UIImagePickerControllerOriginalImage 丢失了。我不确定这是否只是我?

注意:我使用 Xcode 4.3.2 和 iOS 5 SDK

注意 2:我没有使用 AssetsLibrary 框架来获取图像。

注 3(2012 年 8 月 2 日添加):我已升级到安装了 Mountain Lion 的 Xcode 4.4。同样的问题仍然存在。但是现在如果我在 iPad 模拟器 v5.0 中运行它会出现一条新的错误消息(如果我在 iPad 模拟器 v5.1 上运行它不会出现错误消息)。错误消息显示:找不到命名服务“com.apple.PersistentURLTranslator.Gatekeeper”。assetsd 已关闭或配置错误。事情不会像你期望的那样工作。

注 4(添加于 2012 年 11 月 25 日):使用 Xcode 4.5.2,此问题在 iPad 模拟器 5.0、5.1 和 6.0 中仍然存在

注 5(2012 年 3 月 6 日添加):使用 Xcode 4.6,此问题在 iPad 模拟器所有版本中仍然存在。

4

2 回答 2

0

我不知道那个问题,但临时选择,

imagePicker.allowsEditing = YES;

这将为您提供 UIImagePickerControllerOriginalImage 的图像,

我知道这不是办法,但...

于 2013-03-06T08:55:41.527 回答
0

在实际设备上试试这个

     - (IBAction)BrowseImage:(id)sender {

  if ([UIImagePickerController isSourceTypeAvailable:
     UIImagePickerControllerSourceTypeSavedPhotosAlbum])
{
    UIImagePickerController *imagePicker =
    [[UIImagePickerController alloc] init];
    imagePicker.delegate = self;
    imagePicker.sourceType = 
    UIImagePickerControllerSourceTypePhotoLibrary;
    imagePicker.mediaTypes = [NSArray arrayWithObjects:
                              (NSString *) kUTTypeImage,
                              nil];
    imagePicker.allowsEditing = NO;
    [self presentModalViewController:imagePicker animated:YES];
    //newMedia = NO;
}   


-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
  {

[self dismissModalViewControllerAnimated:YES];


 }
于 2012-04-16T16:22:54.440 回答