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 在启动时被调用两次的主要内容,如果未能解决你的问题,请参考以下文章