我对(不仅仅)UI自动旋转有一个非常有趣(但非常烦人)的问题。我正在开发包含标签控制器的应用程序,其中包含几个导航控制器作为标签项。其中一个控制器允许自动旋转到横向模式。
有趣的是它完全适用于模拟器以及我自己的设备,但它不适用于其他测试设备。所有设备都是相同的 - iPhone 3G 16 GB,操作系统版本3.1.3。
当我在寻找在控制台中报告方向更改事件的日志消息时,我只能在我的设备上再次找到它,而不能在其他设备上找到它,因此似乎其他设备根本不会报告方向更改。另一方面,这是不太可能的,因为其他应用程序正常工作......我的手机上正在使用的其他一些功能也无法在其他设备上工作(例如,在tableview中触摸事件处理)。
我从来没有见过这样的东西,也找不到任何理由为什么它不应该以同样的方式在所有设备上运行!所以问题是 - 我疯了还是什么?
我使用UITabBarViewController的子类和overriden方法
- (BOOL) shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation) toInterfaceOrientation {
BOOL shouldRotate = (toInterfaceOrientation == UIInterfaceOrientationPortrait || toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft);
NSLog(@"Should rotate: %d", shouldRotate);
return shouldRotate;
}
然后我在各个方法中处理方向变化动画(willRotate ...,willAnimateRotation ...)。但正如我所说 - 它在我的设备上工作正常,但在其他设备上,从不调用shouldAutorotateToInterfaceOrientation:方法。怪异!
在我结束疯人院之前,请给我一些提示。谢谢你的任何提示。