Ios6 当模式电影播放器覆盖时,UISplitViewController无法识别设备旋转

Ios6 当模式电影播放器覆盖时,UISplitViewController无法识别设备旋转,ios6,uiwebview,rotation,uisplitviewcontroller,Ios6,Uiwebview,Rotation,Uisplitviewcontroller,[这已发布在上,但尚未答复,因此我将在此处尝试。] 我的应用程序对iPad主视图/详细视图使用UISplitViewController,并在iOS 6上运行。拆分视图控制器是其窗口的根视图控制器。详细视图主要由嵌入在UINavigationController中的UIWebView组成。局部视图中唯一的其他元素是导航控制器提供的工具栏和导航栏。当web视图显示带有嵌入式YouTube视频的页面时,用户可以使视频全屏显示。这一切都是由UIWebView完成的——我不负责创建全屏视频播放器。重要的

[这已发布在上,但尚未答复,因此我将在此处尝试。]

我的应用程序对iPad主视图/详细视图使用UISplitViewController,并在iOS 6上运行。拆分视图控制器是其窗口的根视图控制器。详细视图主要由嵌入在UINavigationController中的UIWebView组成。局部视图中唯一的其他元素是导航控制器提供的工具栏和导航栏。当web视图显示带有嵌入式YouTube视频的页面时,用户可以使视频全屏显示。这一切都是由UIWebView完成的——我不负责创建全屏视频播放器。重要的是,一旦视频播放器置于全屏视图中,UIApplication共享实例的keyWindow在视频播放期间不是主应用程序窗口,而是MPFullScreenTransitionViewController的实例

如果用户在此全屏播放期间旋转设备,然后结束播放,则UISplitViewController无法正确放置其子项。方法

splitViewController:willHideViewController:withBarButtonItem:forPopoverController:

永远不会调用委托的(在本例中为局部视图控制器)

如果在播放全屏视频时将设备旋转到横向,则关闭电影播放器会导致显示细节视图控制器,该控制器保留其以前的条形按钮项以在弹出窗口中绘制主视图控制器(尽管点击按钮不会产生任何动作)。在应绘制主视图控制器的位置,仅存在黑色区域。在细节视图控制器中向右滑动将滑出覆盖黑色区域的主视图控制器,但它仍然作为popover而不是持久视图存在

如果在播放全屏视频时将设备旋转到纵向,则禁用电影播放器会导致显示细节视图控制器,该控制器缺少用于在弹出窗口中绘制主视图控制器的条形按钮项。局部视图控制器具有正确的宽度,并且主视图控制器不可见,因此局部视图的外观几乎与预期一致,但缺少条按钮项

在这两种情况下,出现错误视图后手动旋转设备将恢复正确的应用程序功能。然而,依靠用户旋转(或双旋转)设备来解决绘图问题显然是不可接受的


是否有某种方法可以确保分割视图控制器在其所有子项都消失在模态电影播放器后面时能够感知设备旋转?

答案由用户Samurazack在Apple开发者论坛上提出。在UISplitViewController的委托中,将显示视图中拆分视图控制器的强制重新显示:

[self.splitViewController.view setNeedsLayout];
[self.splitViewController.view layoutIfNeeded];
可以在上查看原始响应

[self.splitViewController.view setNeedsLayout];
[self.splitViewController.view layoutIfNeeded];