iPad 模拟器不适用于 iPhone 应用程序中的 UIImagePickerController

Posted

技术标签:

【中文标题】iPad 模拟器不适用于 iPhone 应用程序中的 UIImagePickerController【英文标题】:iPad simulator does not work with UIImagePickerController in an iPhone app 【发布时间】:2012-04-27 23:42:07 【问题描述】:

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

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

iPhone 求和器 真正的 iPhone 运行 5.0.1 真正的 iPad 运行 5.0.1 真正的 iPad 运行 5.1 iPad 模拟器 v4.3

但是如果我测试这个应用程序,选择器无法获取图像:

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

在这2个测试环境中,图片选择器成功出现。当我点击我需要的图像时,它不会通过“- (void)imagePickerController:(UIImagePickerController *)picker”方法从“[info objectForKey:UIImagePickerControllerOriginalImage]”中获得任何信息didFinishPickingMediaWithInfo:(NSDictionary *)info"

“信息”字典是这样的:


    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 模拟器所有版本仍然存在此问题。

【问题讨论】:

嗨,韦恩,我的应用也遇到了同样的问题,如果您找到任何解决方案,请分享 对不起,i-bhavik,还没有解决方案。 (我刚刚添加了注释 5) 对于临时解决方案,我给出了答案。 这个错误是出现在实际设备上还是只出现在模拟器上? 【参考方案1】:

在实际设备上试试这个

     - (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”中输入的内容,因为这是我的问题所在。【参考方案2】:

我不知道这个问题,但在临时选项中,

imagePicker.allowsEditing = YES;

这将为您提供 UIImagePickerControllerOriginalImage 的图像,

我知道不是这样,但是……

【讨论】:

对不起,这在 iPad 模拟器上不起作用(这是问题所在):(

以上是关于iPad 模拟器不适用于 iPhone 应用程序中的 UIImagePickerController的主要内容,如果未能解决你的问题,请参考以下文章

screenShot代码不适用于ipad,适用于iphone

在 xib 文件上设置的约束不适用于 ipad ios

Swift pushViewController 适用于 iPad 但不适用于 iPhone

phonegap 相机适用于 iPhone,但不适用于 iPad

钥匙串类不适用于 iPhone 4s/5 和 iPad

自动旋转代码适用于 iPhone 但不适用于 iPad