UISplitViewController打破了媒体查询。解决方法?

时间:2012-06-01 02:10:20

标签: uiwebview uisplitviewcontroller media-queries

从CSS3媒体查询的角度来看,视图控制器中包含的UIWebView似乎是分割视图控制器,Web视图将自身报告为纵向模式,具有768-px宽的视口。

我已经构建了几个最小测试用例的应用程序来重现这个bug /功能。当Web视图位于视图控制器(窗口的根视图)中时,它不存在。如果拆分视图控制器位于标签栏控制器内,则也不存在。您甚至可以将具有Web视图的视图控制器放置在拆分视图控制器的详细信息窗格内的选项卡栏控制器中,并避免此错误。

但是,我想简单地使用一个分割视图控制器,它是窗口的根视图,并包含一个详细视图控制器,但仍然可以正确地尊重媒体查询。有谁知道实现这个目标的方法?

我试过了:

  • 覆盖详细视图控制器的parentViewController属性(返回nil
  • 覆盖详细视图控制器的splitViewController属性(同上)
  • 覆盖详细信息视图控制器的didRotateToInterfaceOrientation方法
  • 覆盖详细信息视图控制器的willRotateToIntefaceOrientation方法

我正在调查:

  • 使用其他媒体查询
  • 使用第三方拆分视图替换(例如MGSplitViewController)
  • 使用JavaScript手动注入相应的样式表

如果有人遇到此问题并想出解决方案,请告诉我。

1 个答案:

答案 0 :(得分:1)

事实证明,它不是分割视图控制器本身(或标签栏控制器,就此而言)导致纵向/横向混合。

基本上,如果UIWebView比宽度更高,则操作系统会将其视为纵向模式,如果它比较高,则操作系统会将其视为横向模式。

标签栏控制器的存在足以使高度(768 - 20 - 49 = 699)小于宽度(1024 - 320 - 1(装订线)= 703)。