shouldAutorotateToInterfaceOrientation总是被多次调用

时间:2010-05-12 18:13:06

标签: iphone autorotate

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

我的代码在设备旋转时不止一次地获取此事件。我在Apple文档中搜索,但似乎没有运气。任何人都可以提示为什么会发生这种情况吗?

我的代码是Apple doc示例代码(AlternateViews),除了一些日志之外没有任何更改。

2 个答案:

答案 0 :(得分:4)

如果您为某个方向返回NO,它会继续尝试,直到您返回YES。例如,如果您为横向右侧返回NO,则可以尝试向左横向。如果你为一切返回NO,那么它将不会旋转。并且可以在任意时间调用该方法,而不是严格地在旋转发生时调用。例如,当一个新视图弹出到导航控制器上时,即使没有发生旋转,也会查询新视图。

答案 1 :(得分:3)

我是iPhone开发人员的新手,但我认为它被多次调用的原因是shouldAutorotateToInterfaceOrientation不是一个事件。它只是意味着取UIInterfaceOrientation并返回YESNO,具体取决于是否支持自动旋转。

Apple docs显示UIInterfaceOrientation定义为:

typedef enum {
   UIInterfaceOrientationPortrait           = UIDeviceOrientationPortrait,
   UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown,
   UIInterfaceOrientationLandscapeLeft      = UIDeviceOrientationLandscapeRight,
   UIInterfaceOrientationLandscapeRight     = UIDeviceOrientationLandscapeLeft
} UIInterfaceOrientation;

因此,您应该覆盖该方法的所有方法是检查interfaceOrientation上述一个或多个方法,并说明视图是否应该自动旋转。