iOS での自動回転の実装について混乱しています。
UIViewController があり、shouldAutoRotateToInterfaceOrientation 内で自動回転するように指示します。しかし、うまくいきません。そこで、ナビゲーション スタックをどのように確認する必要があるか、および/または UITabBarController が使用されているかどうかについて何かを読みました。これは、あらゆる種類の混乱を引き起こすことが知られているためです (挙手)。
実際、私は UITabBar と UINavigationController を持っています。回転させたい UIView は、3 つまたは 4 つの「レベル」の深さのスタックにプッシュされています。
現在の UIViewController 内で shouldAutoRotateToInterfaceOrientation が返すものだけで自動回転が決定されないのはなぜですか?
https://developer.apple.com/library/ios/#qa/qa2010/qa1688.htmlにある Appleのテクニカル ドキュメントから 、UIViewController が期待どおりに回転しない理由について:
UITabBarController または UINavigationController 内のすべての子ビュー コントローラーが、共通の方向セットに同意していません。
すべての子ビュー コントローラーが正しく回転するようにするには、各タブまたはナビゲーション レベルを表すビュー コントローラーごとに shouldAutorotateToInterfaceOrientation を実装する必要があります。その回転が発生するには、それぞれが同じ方向に同意する必要があります。つまり、それらはすべて、同じ向きの位置に対して YES を返す必要があります。
UITabBars と UINavigationControllers を使用するときに知っておく必要がある事実を誰か要約できますか? 人々はどこをよく間違えますか、または濁りのポイントは何ですか?
UITabBar、UITabBarController、または UINavigationController がある場合、その子ビューはすべて同じ自動回転動作を持つ必要があります。しかし、確かに、いくつかの子ビューを回転させ、他のビューを回転させないようにすることはできますよね?
失敗の一般的な理由は、オートローテーションに適用されるレスポンダー チェーンを十分に理解していないことに関係していると思われます。もしそうなら、誰かが私のためにこれを片付けることができますか? それから、「選択的オートローテーション」を理解できるかもしれません。
これに追加するには、UITabBarController をサブクラス化し、shouldAutorotateToInterfaceOrientation をオーバーライドする必要があることを他の投稿が示しています。