1

分割ビューコントローラにあるビューコントローラに含まれているUIWebViewは、CSS3メディアクエリの観点から、幅768ピクセルのビューポートを備えたポートレートモードであると報告しているようです。

このバグ/機能を再現するために、最小限のテストケースアプリをいくつか作成しました。WebビューがウィンドウのルートビューであるViewControllerにある場合は存在しません。分割ビューコントローラーがタブバーコントローラー内にある場合も表示されません。分割ビューコントローラの詳細ペイン内のタブバーコントローラ内にWebビューベアリングビューコントローラを配置して、このバグを回避することもできます。

ただし、ウィンドウのルートビューであり、メディアクエリを適切に処理する詳細ビューコントローラーを含む分割ビューコントローラーが必要です。誰かがこれを達成する方法を知っていますか?

私はもう試した:

  • 詳細ビューコントローラのparentViewControllerプロパティを上書きする(戻り値nil
  • 詳細ビューコントローラのsplitViewControllerプロパティを上書きする(同上)
  • 詳細ビューコントローラのdidRotateToInterfaceOrientationメソッドをオーバーライドする
  • 詳細ビューコントローラのwillRotateToIntefaceOrientationメソッドをオーバーライドする

私は調査しています:

  • 別のメディアクエリを使用する
  • サードパーティの分割ビュー置換(MGSplitViewControllerなど)を使用する
  • JavaScriptを使用して適切なスタイルシートを手動で挿入する

誰かがこの問題に遭遇し、解決策を見つけた場合は、私に知らせてください。

4

1 に答える 1

1

ポートレートとランドスケープの混同を引き起こしているのは、スプリットビューコントローラー自体(または、さらに言えばタブバーコントローラー)ではないことがわかりました。

基本的に、UIWebViewの高さが幅よりも高い場合、OSはそれを縦向きモードと見なし、幅が高さよりも広い場合、OSは横向きモードと見なします。

タブバーコントローラーの存在は、高さ(768-20-49 = 699)を幅(1024-320-1(ガター)= 703)よりもわずかに小さくするのに十分でした。

于 2012-06-01T02:22:10.570 に答える