shouldAutorotateToInterfaceOrientation在启动时被调用两次

5

我正在进行定向为iOS 5的项目。我的方向方法如下。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{    
  NSLog(@" My Orientation");

  return YES;
}

然而,当我的应用程序启动时,我的日志消息会在控制台上显示两次,即我的方向会显示两次。我正在模拟器中测试我的应用程序,这种情况只发生在启动时,甚至没有改变方向,然后再次改变方向时也是如此。
(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

每次都会被调用两次,我认为这不是正确的行为。非常感谢你的帮助。

3
这个被称为两次有什么问题?另外,你应该返回“是”或“否”。 - Hermann Klecker
在我看来这是正常行为,在iOS6中supportedOrientations在启动时甚至会被调用10次,每次旋转也会被调用两次。 - lupatus
是的,我也注意到了。但我还没有找到任何合理的模式。对我来说,这并不太重要。这就是为什么我问实际问题是什么。 - Hermann Klecker
你认为这是错误行为的原因是什么?文档中在哪里说它只会被调用一次? - Stephen Darlington
2个回答

1

这与您所做的无关。苹果已经让设备多次反应了。这只取决于应用程序在做什么。也许是视图加载,或者其他原因导致它再次触发。但是,这真的是个问题吗?在大多数情况下,不是(或者至少不应该是)。

如果这真的是个问题,那么也许有人应该详细说明一下。然而,至少从我的经验来看,这是常见的行为。我不知道有什么方法可以解决这个问题。

我想,如果这真的困扰你,而且没有办法解决,你可以向苹果报告一个错误。


0

我也有过这样的经历,即 shouldAutoRotateToInterfaceOrientation 总是被调用两次。 有趣的细节是:我的经验是,在第一次调用中,self.view.frame 保留了“旧”的值(从哪里来),而在第二次调用中则保留了“新”的值(它要去哪里)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接