shouldAutorotateToInterfaceOrientation 在启动时被调用两次
Posted
技术标签:
【中文标题】shouldAutorotateToInterfaceOrientation 在启动时被调用两次【英文标题】:shouldAutorotateToInterfaceOrientation Getting called twice on launch 【发布时间】:2012-12-19 10:40:44 【问题描述】:我正在开发针对 ios 5 的项目。我的定位方法如下。
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
NSLog(@" My Orientation");
return YES;
但是,当我的应用程序启动时,我的日志消息将在控制台上显示两次,即我的 Orientation
将显示两次。我正在模拟器中测试我的应用程序,这只是在启动时发生,甚至没有更改orientation
,然后甚至在更改方向时再次发生。即,
(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
每次都被调用两次,我认为这不是正确的行为。任何帮助都是
赞赏。
【问题讨论】:
这被调用两次有什么问题?顺便说一句,您应该返回 YES 或 NO。 IMO 其正常行为,iOS6 中的supportedOrientations 在开始时甚至会被调用10 次,每次旋转时也会被调用两次。 是的,我观察到了同样的情况。而且我没有发现任何合理的模式。对我来说,这并不重要。这就是为什么我问真正的问题是什么。 你为什么认为这是不正确的行为?文档中哪里说它只被调用一次? 【参考方案1】:这不是你所做的。苹果已经多次让设备对此做出反应。这仅取决于应用程序在做什么。可能是视图加载或其他原因导致它再次触发。然而,这真的是个问题吗?在大多数情况下,它不是(或者至少不应该是)。
如果这确实是一个问题,那么也许有人应该详细说明。但是,至少根据我的经验,这是常见的行为。我不知道有什么办法可以解决这个问题。
我想如果这真的困扰您并且无法修复,您可以向 Apple 提交错误。
【讨论】:
【参考方案2】:我还获得了 shouldAutoRotateToInterfaceOrientation 总是调用两次的经验。 有趣的细节:我的经验是,第一次调用中的 self.view.frame 保存“旧”值(从哪里来),在第二次调用中保存“新”值(它去哪里)
【讨论】:
以上是关于shouldAutorotateToInterfaceOrientation 在启动时被调用两次的主要内容,如果未能解决你的问题,请参考以下文章