视图控制器未以正确的方向显示

时间:2011-02-15 14:26:16

标签: iphone sdk view controller orientation

假设我在导航控制器层次结构中有三个视图控制器。

这就是我为所有三个视图控制器处理shouldAutorotateToInterfaceOrientation:消息的方式:

vc1:
{    return (interfaceOrientation == UIInterfaceOrientationPortrait);}

vc2:
{    return (interfaceOrientation == UIInterfaceOrientationPortrait 
  || interfaceOrientation == UIInterfaceOrientationLandscapeLeft
  || interfaceOrientation == UIInterfaceOrientationLandscapeRight);}

vc3:
{    return (interfaceOrientation == UIInterfaceOrientationPortrait);}

因此,我的初始视图控制器 vc1 以纵向模式显示。如果旋转设备,则没有任何反应,这是正确的。然后我将 vc2 推入堆栈,它最初以纵向显示。我旋转设备, vc2 进入横向模式,这是正确的。在 vc2 的横向模式下,我将 vc2 从堆栈中弹出并返回 vc1 ,然后 vc1 以纵向模式显示 - 这也是正确的。

所以现在问题就出现了。

vc1 以纵向显示,弹出 vc2 ,然后旋转以查看横向视图。然后,以横向模式弹出 vc3 vc3 ,即使它只支持肖像。

我不知道为什么会这样,或者如何打击它。换句话说,每当回到vc1时,它只会以纵向自动显示,但vc3会自动显示前一个vc使用的任何方向。但你可以看到我对vc1和vc3使用相同的代码,所以对我来说没有意义。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

您如何确定设备方向?

UIDeviceOrientation指的是err设备的方向,应该与UIDeviceOrientation ...常量进行比较。

UIInterfaceOrientation指的是界面的方向。它是通过读取statusBar的方向来确定的,并且应该与UIInterfaceOrientation进行比较。