代码之家  ›  专栏  ›  技术社区  ›  Wayne Lo

自定义uiviewController对设备旋转没有响应

  •  0
  • Wayne Lo  · 技术社区  · 14 年前

    我有一个自定义的uiview控制器,它是uiview的唯一子视图。uiviewController包含委托函数:

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

    此函数在应用程序启动时调用一次,在设备旋转时不再调用。我还注意到WillRotatetInterfaceOrientation函数从未被调用。我几乎把uiviewcontroller中的所有内容都注释掉了,但它仍然没有响应设备的旋转。

    4 回复  |  直到 14 年前
        1
  •  2
  •   Wayne Lo    14 年前

    我最终解决了我自己的问题,从Stretch开始创建了一个全新的uiviewController,并确保它对设备旋转有响应。然后,我一个接一个地输入我的代码并检查旋转。最后,我找到了根本原因。在我的自定义uiviewcontroller中,我

    - (id)initWithFrame:(CGRect)theframe {
        if (self.view = [super.view initWithFrame:theframe])
    

    它可以找到excpet,即使我没有调用init函数,它也没有响应设备漫游。解决方案很简单。在initWithFrame函数中添加[self init]。感谢大家的回应。

        2
  •  1
  •   Frank Schmitt    14 年前

    您的代码看起来正确。我怀疑它在您的.xib文件中(比如“文件的所有者”的对象类型错误),所以您的视图控制器子类可能根本没有被实例化。把一些日志放到 viewDidLoad 确保有人打电话给它。

        3
  •  1
  •   Hua-Ying    14 年前

    尝试做一个测试应用程序,只测试旋转问题。这将有助于隔离您的问题。

        4
  •  0
  •   Macmade    14 年前

    您可能需要在父uiview的控制器中实现该方法,因为您的视图似乎包含在另一个视图中。