我有一种非常奇怪的行为:
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
内使用UIPopoverController
,一切正常(属于弹出窗口不旋转的事实),但当我解除弹出所有视图控制器时应用停止响应轮播事件,这会导致所有应用都以此方向被阻止。要恢复正确的行为,我需要从后台退出应用程序并再次打开。这是我用来显示popover的代码
_cameraPopoverController = [[UIPopoverController alloc] initWithContentViewController:imagePicker];
[_cameraPopoverController presentPopoverFromRect:_takeFromCamera.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
这个问题让我抓狂!
答案 0 :(得分:0)
您的选择器来源类型是什么? 照片库/相册或相机胶卷?
假设您使用的是照片库/相册来源,在iPad上,您必须使用popover:
不支持全屏显示。
关于另一个问题(在解除popOver之后,其他VC停止旋转)检查你是否有对你的popover(强属性)的STRONG引用。 粘贴您用来呈现弹出窗口的代码。
答案 1 :(得分:0)
虽然我不建议使用类别来覆盖图像选择器的默认行为,但是实现中存在导致提到崩溃的错误:
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return UIInterfaceOrientationMaskPortrait;
~~~~
}
返回值不应该是方向掩码,它应该是一个方向,例如UIInterfaceOrientationPortrait。