iPad UISplitViewController幻影主视图控制器

问题描述:

使用UISplitViewController查找自动旋转问题的解决方案。重新打造的步骤如下:iPad UISplitViewController幻影主视图控制器

  1. 使用的Xcode 4.5 +和iOS6的+ SDK,创建一个使用“主从申请一个新的项目:模板
  2. 一个新的视图控制器添加到项目中有。XIB文件大小为全屏幕
  3. 添加一个按钮呈现使用-presentViewController新的视图控制器全屏幕的详细视图控制器:动画:完成:
  4. 将按钮添加到该驳回新的视图控制器本身使用dismissViewControllerAnimated:完成:
  5. Sta在横向模式下使用iPad处理应用程序,然后按下在显示新视图控制器的详细视图中步骤3中创建的按钮。
  6. 查看全屏视图控制器时,将iPad旋转至纵向,然后点击步骤4中添加的按钮关闭新的视图控制器。

该问题:使用这些步骤,主机和细节视图控制器将自动旋转,但是主视图控制器将停留在屏幕上在一个不响应状态,并采取了一个帧中的左上与横向模式大小相同的屏幕。通过使用iPad左侧的手势,将显示正确的主视图控制器并清除问题。

我们已经能够在新视图控制器中使用viewWillAppear和viewDidDisappear来使幻像主视图控制器隐藏,但即使使用该修复,模板在纵向提供的“主”按钮仍然没有响应我们已经追踪到这样的事实,即在修复之前,主视图控制器所占用的左上方的屏幕区域对触摸没有反应。

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

NOTE:如果在第一次启动应用程序时遵循上述步骤5-6,通常会发生此问题。在单个应用程序启动中重复步骤6通常不会导致每次都出现问题。它在应用的每次发布中都是可重复的。

找到了解决方法。

  1. 在调用presentViewController之前,将视图控制器的模态表示风格设置为UIModalPresentationPageSheet:animated:completion :.
  2. 然后,执行视图控制器的覆盖-viewWillLayoutSubviews方法手动设置超级视图的边界以匹配屏幕大小,纵向768x1004和横向1024x748。