我有一个非常奇怪的行为:
- 在 iOS 5 中,我
UIImagePickerController
以这种方式呈现:
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
不旋转并且它显示在上方。此外,当我按下“取消”按钮并且选择器被关闭时,应用程序再次崩溃。
- 如果我使用
UIImagePickerController
内部 aUIPopoverController
,一切正常(属于弹出框不旋转的事实)但是当我关闭弹出框时,我的应用程序中的所有视图控制器停止响应旋转事件,这导致所有应用程序都被阻止在此方向。要恢复正确的行为,我需要从后台退出应用程序并再次打开。
这是我用来显示弹出框的代码
_cameraPopoverController = [[UIPopoverController alloc] initWithContentViewController:imagePicker];
[_cameraPopoverController presentPopoverFromRect:_takeFromCamera.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
这个问题把我逼疯了!