shouldAutorotateToInterfaceOrientation连续多次调用,没有任何旋转

时间:2010-04-12 11:39:22

标签: iphone iphone-sdk-3.0 ipad

我正在尝试根据设备轮换在我的应用中实现一些界面更改。

我的应用是基于视图的应用。因此,它的主视图控制器有一个didload方法。

该应用以纵向开始。设备方向上的几乎所有更改都会触发shouldAutorotateToInterfaceOrientation方法,但在从任何横向方向进入设备时,不会调用此方法。

在调试应用时,我已经放了一个

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

在我的shouldAutorotateToInterfaceOrientation方法上,我看到的很奇怪:

  • 当我运行应用程序时,在应用程序的界面出现之前,应该调用6次AutorotateToInterfaceOrientation。每次运行时,它都会报告一个不同的方向编号:它在控制台上报告的顺序是:纵向,纵向,纵向,横向右侧,横向左侧,上下颠倒)(????)。

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

所以,问题出现了:

  1. 当设备进入人像时,为什么不应该调用AutorotateToInterfaceOrientation?
  2. 为什么代表在应用程序甚至可见之前调用此方法6次,特别是在没有轮换时?
  3. 感谢。

2 个答案:

答案 0 :(得分:3)

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

它没有承诺设备现在正在旋转,它只是查询控制器可以支持哪些方向。因此声明:

  

您的视图控制器要么能够支持给定的方向,要么不支持。

答案 1 :(得分:2)

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