iPad UISplitViewController Phantom主视图控制器

时间:2013-05-06 19:37:05

标签: ios ipad ios6 uisplitviewcontroller auto-rotation

使用UISplitViewController寻找自动旋转问题的解决方案。重新创建的步骤是:

  1. 使用Xcode 4.5+和iOS6 + SDK,使用“Master-Detail Application:template。”创建一个新项目。
  2. 使用全屏大小的XIB文件向项目添加新的视图控制器。
  3. 使用-presentViewController:animatedViewController:animated:
  4. 向详细视图控制器添加一个按钮,以显示全新的视图控制器。
  5. 向新视图控制器添加一个按钮,使用dismissViewControllerAnimated解除自身:completion:
  6. 使用横向模式的iPad启动应用程序,然后点击显示新视图控制器的详细视图中步骤3中创建的按钮。
  7. 在查看全屏视图控制器时,将iPad旋转为纵向,然后点击步骤4中添加的按钮以关闭新的视图控制器。
  8. 问题:使用这些步骤,主视图控制器和详细视图控制器都将自动旋转,但主视图控制器将保持在屏幕上处于无响应状态并占用上层框架屏幕左侧与横向模式下的尺寸相同。通过使用iPad左侧的手势,将显示正确的主视图控制器并清除问题。

    我们已经能够在新的视图控制器中使用viewWillAppear和viewDidDisappear来隐藏幻像主视图控制器,但即使使用该修复,模板提供的“主”按钮在执行上述步骤后仍然无响应,我们已经追溯到这样一个事实,即在修复之前由主视图控制器占据的左上方屏幕区域对触摸没有响应。

    我们已尝试过以不同方式辞职第一响应者的几次尝试,但没有完全解决问题的运气。

    注意:只有在首次启动应用时遵循上述步骤5-6时,才会出现此问题。在单个应用程序启动中重复步骤6通常不会每次都导致问题。每次发布应用程序都可以重复。

1 个答案:

答案 0 :(得分:0)

找到了解决此问题的方法。

  1. 在调用presentViewController之前,将视图控制器的模态演示样式设置为UIModalPresentationPageSheet:animated:completion:。
  2. 然后,覆盖了视图控制器-viewWillLayoutSubviews方法,手动设置超视图的边界以匹配屏幕大小,肖像为768x1004,横向为1024x748。