2010-04-12 25 views
1

我想基于设备旋转在我的应用中实现一些界面更改。shouldAutorotateToInterfaceOrientation连续调用几次而没有任何旋转

我的应用程序是一个基于视图的应用程序。所以,它的主视图控制器有一个didload方法。

该应用程序以纵向显示。设备方向上的几乎所有更改都会触发shouldAutorotateToInterfaceOrientation方法,但在从任何横向方向来到设备时,都不会调用此方法。

在调试应用程序,我已经把

NSLog(@"orientation=%d", interfaceOrientation); 

我shouldAutorotateToInterfaceOrientation方法,和我所看到的是很奇怪:

  • 当我运行应用程序,shouldAutorotateToInterfaceOrientation被称为6次甚至在应用界面出现之前。每次运行时,它都会为方向报告不同的编号:它在控制台上报告的顺序是:纵向,纵向,纵向,右侧,左侧,倒置)(????)。

在此期间,应用程序刚刚开始。调试器报告来自应用程序代理的所有6个调用。

所以,来这里的问题:

  1. 为什么shouldAutorotateToInterfaceOrientation当设备上的画像进入不会被调用?
  2. 为什么代表在应用程序显示之前调用此方法6次,特别是在没有旋转时?

谢谢。

回答

3

UIViewController Class Reference似乎说这个方法返回一个值“指示视图控制器是否支持指定的方向”。

它没有作出任何承诺,设备现在不旋转,它只是查询你的控制器可以支持的方向。因此声明:

您的视图控制器可以支持给定的方向,或者它不是。

2

系统正在缓存响应,因此它知道要尝试和检测哪些方向。