繁体   English   中英

iPad UISplitViewController幻影主视图控制器

[英]iPad UISplitViewController Phantom Master View Controller

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

  1. 使用Xcode 4.5+和iOS6 + SDK,使用“主从应用程序:”模板创建一个新项目。
  2. 使用大小为全屏的XIB文件将新的视图控制器添加到项目中。
  3. 将一个按钮添加到详细视图控制器,该按钮使用-presentViewController:animated:completion全屏显示新的视图控制器:
  4. 将一个按钮添加到新的视图控制器,该按钮使用dismissViewControllerAnimated:completion消除自身:
  5. 在横向模式下以iPad启动应用程序,然后在显示新视图控制器的详细视图中单击步骤3中创建的按钮。
  6. 在查看全屏视图控制器时,将iPad旋转至纵向,然后点击在步骤4中添加的按钮以关闭新的视图控制器。

问题:使用以下步骤,主视图控制器和详细视图控制器都将自动旋转,但主视图控制器将以无响应状态停留在屏幕上,并在屏幕左上方占据与它是横向模式。 通过使用iPad左侧的手势,可以显示正确的主视图控制器,并且可以消除问题。

我们已经能够在新的视图控制器中使用viewWillAppear和viewDidDisappear来隐藏幻影主视图控制器,但是即使进行了此修复,按照上述步骤,模板在纵向模式中提供的“主”按钮仍然没有响应,我们可以追溯到以下事实:修复之前,主视图控制器在左上角占据的屏幕区域对触摸没有响应。

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

注意:此问题通常仅在首次启动应用程序时遵循上述步骤5-6时才会发生。 在单个应用程序启动中重复执行步骤6通常不会每次都导致问题。 每次启动该应用程序时都可以重复。

找到了解决办法。

  1. 在调用presentViewController:animated:completion:之前,将视图控制器的模式表示样式设置为UIModalPresentationPageSheet。
  2. 然后,对视图控制器的-viewWillLayoutSubviews方法进行了覆盖,以手动设置超级视图的边界以匹配屏幕尺寸,纵向为768x1004,横向为1024x748。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM