shouldAutorotateToInterfaceOrientation未调用所有预期的方向模式

时间:2011-02-24 21:37:38

标签: iphone

我在窗口中添加了一个UIViewController,我的应用程序配置为支持Info.plist文件中的Portrait和LandscapeLeft方向。

我将设备放在Landscape Left中,在我的视图加载后,我看到两次调用“shouldAutorotateToInterfaceOrientation”。但是,无论何时调用此方法,“toInterfaceOrientation”的值始终为“UIInterfaceOrientationPortrait”。

我期待一次对Portrait的调用,至少是另一次针对'UIInterfaceOrientationLandscapeLeft'的调用,因为这就是我目前持有该设备的方式。

Controller的视图xib被配置为使用纵向模式加载视图,但我想我会被问到除了Portrait之外还支持哪些方向。

为什么我没有将两种不同的定位模式传递给“shouldAutorotateToInterfaceOrientation”?

2 个答案:

答案 0 :(得分:3)

您的视图控制器是否在另一个视图控制器内?

方向更改只到达响应链中的第一个VC,然后无法保证消息的传播。

答案 1 :(得分:2)

如果您无法保留视图控制器,也会发生这种情况。因此,如果您的应用代表有

 UIViewController* vc = [[UIViewController alloc]init];
 [self.window addSubview: vc.view];

然后在自动引用计数下,vc将在上述代码执行后不久被释放。因此,不会有自转。要解决此问题,请将vc分配给强大的ivar。