【问题标题】:UIImagePickerController crashes in iPadUIImagePickerController 在 iPad 中崩溃
【发布时间】:2011-02-18 21:00:13
【问题描述】:
-(IBAction)selectPressed:(id)sender
{
    UIImagePickerController *picker = [[UIImagePickerController alloc] init];
    picker.delegate = self;
    picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    [self presentModalViewController:picker animated:YES];
    [picker release];
}

我正在 iPad 和 iPhone 模拟器上测试此代码。在 iPhone 模拟器中(以及在真正的 iPhone 上)没关系 - 画廊出现了。但是在 iPad 模拟器上(我没有设备),它崩溃了。任何想法为什么?

【问题讨论】:

标签: iphone objective-c ipad uiimagepickercontroller gallery


【解决方案1】:

请阅读设备日志中的异常信息:

On iPad, UIImagePickerController must be presented via UIPopoverController

【讨论】:

  • 文档 developer.apple.com/library/ios/#documentation/uikit/reference/… 声明“在 iPad 上,您可以替代地使用弹出框呈现用户界面”(遵循使用模态视图控制器的标准方式)。因此,根据文档,错误消息只是UIKit 中的一个错误。
  • iOS7 现在允许 UIImagePickerController 的全屏模式演示,我还没有尝试过 FormSheet 等,但应该是一样的!
【解决方案2】:

马克斯说:

在 iPad 上,UIImagePickerController 必须通过 UIPopoverController 呈现

现在看来,当 UIImagePickerController 的 sourceType 设置为 UIImagePickerControllerSourceTypeCamera 时,我们可以呈现 ModalViewController。这必须是为了在全屏视图中支持 iPad 2 的相机。 Max 是正确的,当 sourceType 设置为其他任何值时,presentModalViewController 在 iPad 上崩溃。

【讨论】:

  • 从什么时候开始的?哪个 iOS 版本?
  • 我发现我的 iPad2 正好相反。相机崩溃。照片库工作。
【解决方案3】:

在 iPad 上显示模态视图控制器时,该视图控制器还需要设置其 modalPresentationStyle 属性才能显示传入的视图。

以下是文档中提供给您的选项:

typedef enum {
   UIModalPresentationFullScreen = 0,
   UIModalPresentationPageSheet,
   UIModalPresentationFormSheet,
   UIModalPresentationCurrentContext,
} UIModalPresentationStyle;

【讨论】:

  • 我尝试设置 picker.modalPresentationStyle = UIModalPresentationFullScreen;或 self.modalPresentationStyle = UIModalPresentationFullScreen;但它没有帮助
  • 查看@Max 的答案。我不知道 iPad 上 UIImagePickerController 的这个特定要求。
【解决方案4】:

尝试将此代码用于 ipad 照片库,

UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
popover = [[UIPopoverController alloc] initWithContentViewController:imagePicker];
[popover presentPopoverFromRect:CGRectMake(0.0, 0.0, 400.0, 400.0) 
                         inView:self.view
       permittedArrowDirections:UIPopoverArrowDirectionAny 
                       animated:YES];

http://www.techotopia.com/index.php/An_Example_iOS_4_iPad_Camera_and_UIImagePickerController_Application_(Xcode_4) 参考..

【讨论】:

    猜你喜欢
    • 2013-09-27
    • 2013-01-04
    • 2013-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-29
    • 1970-01-01
    • 2012-06-13
    相关资源
    最近更新 更多