在iOS 6中UIPopoverController方位的碰撞[复制](UIPopoverContr

2019-07-30 22:54发布

这个问题已经在这里有一个答案:

  • 崩溃在iOS下呈现的UIImagePickerController 6.0 5回答

我目前的方案只支持横向。

在iOS 6中,它会崩溃UIPopoverController

“UIApplicationInvalidInterfaceOrientation”,理由是:“支持的方向与应用程序中没有共同的方向,并shouldAutorotate将返回YES”

我使所有方向的项目,它的工作好。 不过,我需要改变很多关于所有的意见,唯一支持的风景线。

有没有其他简单的方法来解决, UIOrientationUIPopoverController

Answer 1:

尝试添加以下到您的UIApplicationDelegate

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
    return UIInterfaceOrientationMaskAll;
}

您还可以设置你支持的接口方向在你Info.plist文件并返回在每个视图控制器的面具supportedInterfaceOrientations:方法。



Answer 2:

的UIImagePickerController的新的子类,并添加此代码:

@property (nonatomic)NSUInteger supportedInterfaceOrientations;

-(NSUInteger)supportedInterfaceOrientations{
    return _supportedInterfaceOrientations;
}
-(BOOL)shouldAutorotate{
    return YES;
}

使用这样的:

    if (imagePickerController==nil) {
        imagePickerController = [[WUIImagePickerController alloc]init];//the subclass
        imagePickerController.delegate = self;
        imagePickerController.supportedInterfaceOrientations = UIInterfaceOrientationMaskLandscapeRight;//any orientation you want to set
        if (popoverController==nil) {
            popoverController = [[UIPopoverController alloc]initWithContentViewController:imagePickerController];
        }
    }

谁知道更好的方法请告诉我。



Answer 3:

@interface NonRotatingUIImagePickerController : UIImagePickerController

@end

@implementation NonRotatingUIImagePickerController

- (BOOL)shouldAutorotate
{
    return NO;
}

@end

UIImagePickerController *picker = [[NonRotatingUIImagePickerController alloc] init];

使用上面的代码,这为我工作。



Answer 4:

你的这个链接 。 你必须设置你的应用程序支持所有方向的开始。 不要在应用程序委托的变化。

-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window

{
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
        return UIInterfaceOrientationMaskAll;
    else  /* iphone */
        return UIInterfaceOrientationMaskAllButUpsideDown;

}


Answer 5:

Use these delegates for orientation,
- (BOOL)shouldAutorotate
{

return YES;
}

-(NSUInteger)supportedInterfaceOrientations

{
return UIInterfaceOrientationMaskLandscape;

}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
  return UIInterfaceOrientationLandscapeLeft;
}


文章来源: UIPopoverController orientation crash in iOS 6 [duplicate]