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