起動時の奇妙な問題を除いて、正しく動作する iPad アプリがあります。オリエンテーションに関するいくつかの質問と回答を読みましたが、それでも困惑しています。
ルート ビュー コントローラーは、3 つのタブを持つ UITabBarController です。2 つのタブにはカスタム ビュー コントローラーがあり (1 つは UIViewController に基づいており、もう 1 つは UITableViewController に基づいています)、どちらもこの起動方向の問題に悩まされています。3 番目のタブは、UINavigationController に埋め込まれたカスタム UITableViewController です。
さて、ここで問題です。アプリを縦向きで起動すると、すべてうまくいきます。横向きで起動すると、3 番目のタブが完全に機能します。ただし、次の場合でも、最初の 2 つのタブは縦向きで表示されます。
- ステータス バーの向きが横向き (画面全体に広がる) として正しく表示されます。
- タブ バー ビューは、タブが中央に配置された横向きとして正しく表示されます。
- すべてのビューは、すべての向きの shouldAutorotateToInterfaceOrientation に対して YES を返します。
ビュー コントローラーの viewWillAppear で [self interfaceOrientation] または [[UIApplication sharedApplication] statusBarOrientation] を呼び出すと、3 番目のタブのビュー コントローラーは 3 (横向き) を報告しますが、最初の 2 つのビュー コントローラーはステータス バーがはっきりと表示されているにもかかわらず 1 (縦向き) を報告します。風景!
iPad を縦向きに回転させてから横向きに戻すと、3 つのタブのビューはすべて正しく回転します (上記のメソッドは予想どおり 3 を返します)。
また、他のタブをタップしてからタブ #1 または #2 に戻ると、iPad 自体を回転させなくても正しく回転するようになりました。
私は何が欠けていますか?