iOS 6中的UIPopoverController方向崩溃

时间:2012-08-13 06:02:02

标签: objective-c uipopovercontroller ios6

我目前的程序仅支持横向定位。

在iOS 6中,它在UIPopoverController上崩溃。

  

'UIApplicationInvalidInterfaceOrientation',原因:'支持   方向与应用程序没有共同的方向,并且   shouldAutorotate返回YES'

我为项目启用了所有方向,它运行良好。但是,我需要为所有视图进行大量更改,以仅支持格局。

还有其他简单的方法可以解决UIOrientation中的UIPopoverController吗?

5 个答案:

答案 0 :(得分:0)

尝试将以下内容添加到UIApplicationDelegate

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

您仍然可以在Info.plist文件中设置支持的界面方向,并在每个视图控制器的supportedInterfaceOrientations:方法中返回一个掩码。

答案 1 :(得分:0)

新建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];
        }
    }

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

答案 2 :(得分:0)

这是link。您必须将应用程序设置为在开始时支持所有方向。在app delegate中进行更改。

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

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

}

答案 3 :(得分:0)

@interface NonRotatingUIImagePickerController : UIImagePickerController

@end

@implementation NonRotatingUIImagePickerController

- (BOOL)shouldAutorotate
{
    return NO;
}

@end

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

使用Above Code,这对我有用。

答案 4 :(得分:0)

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

return YES;
}

-(NSUInteger)supportedInterfaceOrientations

{
return UIInterfaceOrientationMaskLandscape;

}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
  return UIInterfaceOrientationLandscapeLeft;
}