iPad方向无法正确返回

时间:2012-01-16 02:21:15

标签: iphone ios xcode ipad

我基本上运行这段代码:

UIInterfaceOrientation statusBarOrientation = [[UIApplication sharedApplication] statusBarOrientation];

if(statusBarOrientation == UIInterfaceOrientationPortrait){
     NSLog(@"orientation is portrait");
}

但是,无论模拟器或iPad的实际方向如何,都会打印“orientation is portrait”。尝试NSLog将statusBarOrientation作为%d也返回1,无论方向如何。

我坚持这是我的app委托,我的视图控制器,以及我需要它的类,以及它的相同之处。我的info.plist /目标设置支持所有4个设备方向。

有没有人能够确定接口方向,或者为什么我的工作不正常?感谢

3 个答案:

答案 0 :(得分:3)

如果您不想使用Notification进行定位..那么也可以使用以下方法。

这是iPad中只有横向定位和iPhone中的肖像的示例......

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
    {
        if(interfaceOrientation==UIInterfaceOrientationLandscapeLeft ||  
         interfaceOrientation==UIInterfaceOrientationLandscapeLeft)
            return YES;
        else
            return NO;
    }
    else
    {
        return (interfaceOrientation == UIInterfaceOrientationPortrait);
    }
}

答案 1 :(得分:1)

您可以注册有关方向更改的通知:

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];   
[[NSNotificationCenter defaultCenter] addObserver:self
                            selector:@selector(didRotate:)
                            name:@"UIDeviceOrientationDidChangeNotification" 
                            object:nil];

- (void)didRotate:(NSNotification *)notification
{   
   UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];

if ((orientation == UIDeviceOrientationLandscapeLeft || orientation == UIDeviceOrientationLandscapeRight)) {
         // DO STUFF
}
else if (orientation == UIDeviceOrientationPortrait) {
          //DO MORE STUFF 
}

}

答案 2 :(得分:0)

目前您正在返回状态栏的方向。而是获取设备的方向:[[UIDevice currentDevice] orientation]