0

UISplitViewController を使用して自動回転の問題の解決策を探しています。再作成する手順は次のとおりです。

  1. Xcode 4.5 以降と iOS6 以降の SDK を使用して、"Master-Detail Application: テンプレートを使用して新しいプロジェクトを作成します。
  2. 全画面サイズの XIB ファイルを使用して、新しいビュー コントローラーをプロジェクトに追加します。
  3. -presentViewController:animated:completion を使用して、新しいビュー コントローラーを全画面表示するボタンを詳細ビュー コントローラーに追加します。
  4. DismissViewControllerAnimated:completion を使用して、それ自体を閉じる新しいビュー コントローラーにボタンを追加します。
  5. iPad をランドスケープ モードにしてアプリを起動し、手順 3 で作成した詳細ビューのボタンをクリックして、新しいビュー コントローラーを表示します。
  6. 全画面ビュー コントローラーを表示しているときに、iPad を縦向きに回転させ、手順 4 で追加したボタンをタップして、新しいビュー コントローラーを閉じます。

問題:これらの手順を使用すると、マスター ビュー コントローラーと詳細ビュー コントローラーの両方が自動回転しますが、マスター ビュー コントローラーは応答しない状態で画面にとどまり、画面の左上に同じサイズのフレームを占有します。ランドスケープモードでした。iPad の左側からジェスチャを使用すると、正しいマスター ビュー コントローラーが表示され、問題が解決されます。

新しいView ControllerでviewWillAppearとviewDidDisappearを使用して、ファントムマスターView Controllerを非表示にすることができましたが、その修正を行っても、テンプレートが縦向きで提供する「マスター」ボタンは、上記の手順に従っても応答しないままであり、修正前にマスタービューコントローラーが占めていた左上の画面の領域がタッチに反応しないという事実にたどり着きました。

さまざまな方法でファーストレスポンダーを辞任する試みをいくつか試みましたが、問題を完全に解決することはできませんでした。

注:この問題は通常、アプリを最初に起動するときに上記の手順 5 ~ 6 に従った場合にのみ発生します。通常、1 回のアプリ起動で手順 6 を繰り返しても、毎回問題が発生するわけではありません。アプリを起動するたびに繰り返されます。

4

1 に答える 1

0

これに対する修正が見つかりました。

  1. presentViewController:animated:completion: を呼び出す前に、View Controller のモーダル プレゼンテーション スタイルを UIModalPresentationPageSheet に設定します。
  2. 次に、ビュー コントローラーの -viewWillLayoutSubviews メソッドをオーバーライドして、スーパービューの境界を手動で設定し、画面サイズ (縦向きの場合は 768x1004、横向きの場合は 1024x748) に一致させました。
于 2013-05-08T23:56:52.417 に答える