【问题标题】:childViewControllers not receiving rotation eventschildViewControllers 没有接收到旋转事件
【发布时间】:2013-06-04 19:39:27
【问题描述】:

我有一个看起来像这样的父/子视图控制器系统

-- (Parent) RootViewController
      -- (Child) ChildController
              -- (Child) GrandChildController1
              -- (Child) GrandChildController2

基本上,我有一个带有 childViewController 的根视图控制器。该 childViewController 充当其他几个控制器的 parentViewController。现在,我想允许其中一个 GrandChildViewController 旋转。但这是层次结构中唯一允许旋转的控制器。

我将子视图控制器添加到这样的层次结构中:

[self addChildViewController:_childViewController];
[self.view addSubview:_childViewController.view];

现在,当设备旋转时,我的第一个 childViewController 正在接收旋转事件,但该控制器的所有子视图(大子视图控制器)都没有接收到旋转事件。有人知道为什么吗?

谢谢

【问题讨论】:

  • 您是否从轮换回调覆盖中调用超级方法?
  • 您也应该调用 [_childViewController didMoveToParentViewController],但我不知道这是否能解决您的问题。
  • 检查这个 SO 答案stackoverflow.com/a/8927955/2315974
  • @rdelmar 感谢您的提醒。我已经添加了这个,不幸的是它没有解决问题。
  • @SanjitSaluja 不,我不是,你指的是哪些方法?

标签: iphone ios uiviewcontroller uikit


【解决方案1】:

注意事项:

  • 在 iOS 6 中,您还需要覆盖 supportedInterfaceOrientations - 覆盖 shouldAutorotate 是不够的。
  • 在 iOS 5 中,如果父 VC 为 shouldAutorotateToInterfaceOrientation: 返回 NO,它将取消子 VC 的轮换。我不确定 iOS 6 的自动旋转机制是否有类似的行为。

从你的 cmets 我猜你缺少supportedInterfaceOrientations。如果我的猜测是错误的,那么如果您向我们展示您在所有控制器中实现自动旋转方法可能会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多