iOS 6中的UIImagePickerController无法正常工作

时间:2013-01-17 15:55:22

标签: ios ipad ios6 uiimagepickercontroller

我有一种非常奇怪的行为:

    iOS 5中的
  1. 以这种方式呈现UIImagePickerController
  2. imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; imagePicker.modalPresentationStyle = UIModalPresentationFullScreen; imagePicker.modalTransitionStyle = UIModalTransitionStyleCoverVertical;

    [self presentModalViewController:imagePicker animated:YES];

    现在在iOS 6中产生了崩溃。我在UIImagePickerController上写了一个类别来解决崩溃:

    @implementation UIImagePickerController (NonRotating)
    
    - (BOOL)shouldAutorotate
    {
        return NO;
    }
    
    - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
    {
        return UIInterfaceOrientationMaskPortrait;
    }
    
    - (NSUInteger)supportedInterfaceOrientations
    {
        return UIInterfaceOrientationMaskAll;
    }
    
    @end
    

    问题是现在UIImagePickerController不会旋转,而是显示在上方。此外,当我按下“取消”按钮并且取消选择器时,应用程序再次崩溃。

    1. 如果我在UIImagePickerController内使用UIPopoverController,一切正常(属于弹出窗口不旋转的事实),但当我解除弹出所有视图控制器时应用停止响应轮播事件,这会导致所有应用都以此方向被阻止。要恢复正确的行为,我需要从后台退出应用程序并再次打开。
    2. 这是我用来显示popover的代码

      _cameraPopoverController = [[UIPopoverController alloc] initWithContentViewController:imagePicker];
      [_cameraPopoverController presentPopoverFromRect:_takeFromCamera.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
      

      这个问题让我抓狂!

2 个答案:

答案 0 :(得分:0)

您的选择器来源类型是什么? 照片库/相册或相机胶卷?

假设您使用的是照片库/相册来源,在iPad上,您必须使用popover:

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIImagePickerController_Class/UIImagePickerController/UIImagePickerController.html(请参阅概述,第4点)

不支持全屏显示。

关于另一个问题(在解除popOver之后,其他VC停止旋转)检查你是否有对你的popover(强属性)的STRONG引用。 粘贴您用来呈现弹出窗口的代码。

答案 1 :(得分:0)

虽然我不建议使用类别来覆盖图像选择器的默认行为,但是实现中存在导致提到崩溃的错误:

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    return UIInterfaceOrientationMaskPortrait;
                                 ~~~~
}

返回值不应该是方向掩码,它应该是一个方向,例如UIInterfaceOrientationPortrait。