iPad模拟器无法在iPhone应用中使用UIImagePickerController。

9
我正在创建一个iPhone应用程序,使用UIImagePickerController让用户从照片库中选择图像。
这个选择器成功地从照片库中获取了图像:
- iPhone模拟器 - 运行5.0.1的真实iPhone - 运行5.0.1的真实iPad - 运行5.1的真实iPad - iPad模拟器v4.3
但是当我在以下两个测试环境中测试此应用时,选择器无法获取图像:
- iPad模拟器v5.0 - iPad模拟器v5.1
在这两个测试环境中,图像选择器成功显示。当我点按所需的图像时,通过方法“-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info”无法从“ [info objectForKey:UIImagePickerControllerOriginalImage] ”获得任何内容。
"info"字典就像这样:
{
    UIImagePickerControllerMediaType = "public.image";
    UIImagePickerControllerReferenceURL = "assets-library://asset/asset.PNG?id=7632C58F-AF74-4EEB-AF17-891E35949CBA&ext=PNG";
}

在前五个测试环境中,“info”是这样的:

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

您可以看到UIImagePickerControllerOriginalImage丢失了。我不确定这是否只发生在我的情况中?
注意:我正在使用带有iOS 5 SDK的Xcode 4.3.2。
注意2:我没有使用AssetsLibrary框架来获取图像。
注意3(添加于2012年8月2日):我已升级到安装了Mountain Lion的Xcode 4.4。同样的问题仍然存在。但是,如果我在iPad模拟器v5.1上运行它,则不会出现新的错误消息(如果我在iPad模拟器v5.0上运行它,则会出现错误消息)。错误消息显示:“未找到命名服务'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模拟器中仍然存在此问题。

嗨,Wayne,我的应用程序也遇到了同样的问题,如果你找到任何解决方案,请分享。 - iBhavik
抱歉i-bhavik,目前还没有解决方案。(我刚刚添加了备注5) - Wayne Liu
为了解决临时问题,我给出了答案。 - iBhavik
这个 bug 是在实际设备上出现还是只在模拟器上出现? - Noam Solovechick
2个回答

0

我不知道问题出在哪里,但是有一个临时的解决方案:

imagePicker.allowsEditing = YES;

这将为您提供UIImagePickerControllerOriginalImage的图像,

我知道这不是正确的方法,但是...


抱歉,这在iPad模拟器上无法运行(这也是问题所在):( - drpawelo

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];


 }

谢谢,您能展示一下您在“- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info”中放置了什么吗?因为这正是我的问题所在。 - Wayne Liu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接