我在窗口中添加了一个UIViewController,我的应用程序配置为支持Info.plist文件中的Portrait和LandscapeLeft方向。
我将设备放在Landscape Left中,在我的视图加载后,我看到两次调用“shouldAutorotateToInterfaceOrientation
”。但是,无论何时调用此方法,“toInterfaceOrientation
”的值始终为“UIInterfaceOrientationPortrait
”。
我期待一次对Portrait的调用,至少是另一次针对'UIInterfaceOrientationLandscapeLeft
'的调用,因为这就是我目前持有该设备的方式。
Controller的视图xib被配置为使用纵向模式加载视图,但我想我会被问到除了Portrait之外还支持哪些方向。
为什么我没有将两种不同的定位模式传递给“shouldAutorotateToInterfaceOrientation
”?
答案 0 :(得分:3)
您的视图控制器是否在另一个视图控制器内?
方向更改只到达响应链中的第一个VC,然后无法保证消息的传播。
答案 1 :(得分:2)
如果您无法保留视图控制器,也会发生这种情况。因此,如果您的应用代表有
UIViewController* vc = [[UIViewController alloc]init];
[self.window addSubview: vc.view];
然后在自动引用计数下,vc将在上述代码执行后不久被释放。因此,不会有自转。要解决此问题,请将vc分配给强大的ivar。