我有一个自定义的UIViewController,它是UIView的唯一子视图。 UIViewController包含委托函数:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return YES;
}
此功能在应用程序启动时调用一次,在旋转设备时从不再调用。我还注意到永远不会调用willRotateToInterfaceOrientation函数。我几乎注释掉了UIViewController中的所有内容,但它仍然没有响应设备轮换。
答案 0 :(得分:2)
我最终通过从stretch开始创建一个全新的UIViewController解决了我自己的问题,并确保它对设备轮换做出响应。然后我逐个引入我的代码并检查旋转。最后,我找到了根本原因。在我的自定义UIViewController中,我有
- (id)initWithFrame:(CGRect)theframe {
if (self.view = [super.view initWithFrame:theframe])
虽然我没有调用init函数,但它找到了excpet它没有响应设备roation。解决方案很简单。在initWithFrame函数中添加[self init]。谢谢大家的回复。
答案 1 :(得分:1)
您的代码看起来是正确的。我怀疑它是.xib文件中的内容(就像“文件所有者”的错误对象类型一样),因此可能根本没有实例化您的视图控制器子类。将一些日志记录到viewDidLoad
并确保它被调用。
答案 2 :(得分:1)
尝试做一个只测试旋转问题的测试应用。这有助于隔离您的问题。
答案 3 :(得分:0)
您可能需要在父UIView的控制器中实现该方法,因为您的视图似乎包含在另一个视图中。