无法检测负载方向 - iPad

时间:2012-04-05 22:14:10

标签: objective-c ipad uiinterfaceorientation

我经历了很多不同的问题,出于某种原因,我还是无法让我的iPad检测到负载方向。

似乎最好的方法是检测statusBarOrientation:

- (void)viewDidLoad {
    [super viewDidLoad];
    NSLog(@"View Loads");

    if ([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationLandscapeLeft
        || [[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationLandscapeRight) {
        NSLog(@"This is Landscape"); 
    } else {
        NSLog(@"This is Portrait"); 
    }
}

但它总是返回“肖像”。我的.plist中有所有4个方向,并且还设置了shouldAutorotateToInterfaceOrientation:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
        return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || 
                interfaceOrientation == UIInterfaceOrientationLandscapeRight || 
                interfaceOrientation == UIInterfaceOrientationPortrait);        
        } else {
        return (interfaceOrientation == UIInterfaceOrientationPortrait);
    }
}

有没有人有任何其他建议?提前谢谢!

1 个答案:

答案 0 :(得分:4)

iPad应用程序始终以纵向模式启动,无论实际的设备方向如何(如果这是设备所在,它们会立即旋转到横向)。如果您在程序生命周期的后期使用相同的代码检查状态栏方向,您将看到它返回实际方向。