自定义UIViewController无法响应设备旋转

时间:2010-03-18 17:39:07

标签: iphone uiviewcontroller rotation

我有一个自定义的UIViewController,它是UIView的唯一子视图。 UIViewController包含委托函数:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return YES;
}

此功能在应用程序启动时调用一次,在旋转设备时从不再调用。我还注意到永远不会调用willRotateToInterfaceOrientation函数。我几乎注释掉了UIViewController中的所有内容,但它仍然没有响应设备轮换。

4 个答案:

答案 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的控制器中实现该方法,因为您的视图似乎包含在另一个视图中。