shouldAutorotateToInterfaceOrientation& UINavigationController的

时间:2010-05-06 18:11:24

标签: iphone objective-c ipad

我正在尝试在我的应用程序中实现自动旋转,该应用程序基本上是UINavigationController,其中包含许多被推到它上面的UIViewControllers。

我已经在我的第一个UIViewController中复制了这个(它被推入UINavigationController):

- (BOOL)shouldAutorotateToInterfaceOrientation:
(UIInterfaceOrientation)interfaceOrientation {
 return YES;
}

一切正常......但是,如果我将该代码粘贴到第二个UIViewController(第一个按钮点击后按下顶部) - 自动旋转将无法正常工作。在第一次初始化UIViewController时调用shouldAutorotateToInterfaceOrientation,但在它可见并且我旋转设备后 - 没有任何反应。

结果是:第一个视图旋转得很好 - 肖像/风景...但是在我点击按钮进入第二个视图后,我仍然坚持使用那个肖像或风景,无论什么是活动的。

我尝试了子类化UINavigationController并在那里设置了shouldAutorotateToInterfaceOrientation,但这也行不通。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

API中存在一个错误,它不会使其适用于第二个视图。我最初使用setOrientation解决了它,但这是一个私有API,因此不是一个合理的解决方案。当我试图找出替代方案时,我还没有发布任何新版本的应用程序(我不认为让客户升级到OS 4.0是一个解决方案)。我想我需要手动跟踪方向并手动旋转我的视图以抵消错误旋转的影响。

答案 1 :(得分:0)

您需要在层次结构

中的所有视图中实现此方法