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

Posted

技术标签:

【中文标题】shouldAutorotateToInterfaceOrientation 连续调用多次,没有任何旋转【英文标题】:shouldAutorotateToInterfaceOrientation called several times in a row without any rotation 【发布时间】:2010-04-12 11:39:22 【问题描述】:

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

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

应用以纵向启动。几乎所有对设备方向的更改都会触发 shouldAutorotateToInterfaceOrientation 方法,但是当设备从任何横向方向放置为纵向时,不会调用此方法。

在调试应用程序时,我放了一个

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

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

当我运行应用程序时,shouldAutorotateToInterfaceOrientation 在应用程序界面出现之前被调用了 6 次。每次运行时,它都会报告一个不同的方向数字:它在控制台上报告的顺序是:纵向、纵向、纵向、横向右侧、横向左侧、倒置)(????)。

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

那么,问题来了:

    为什么当设备进入纵向时不调用 shouldAutorotateToInterfaceOrientation? 为什么代理在应用程序可见之前调用此方法 6 次,特别是在没有进行旋转时?

谢谢。

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于shouldAutorotateToInterfaceOrientation 连续调用多次,没有任何旋转的主要内容,如果未能解决你的问题,请参考以下文章