私の rootViewController は でUITabbarController
あり、s が含まれていますUINavigationController
。
回転を制限するために、iOS6 以降、すべてではなく一部のビューで、これらの両方のコントローラーをサブクラス化して、最上位ビューまたは可視ビューの shouldAutorotate 応答を尊重するようにしました。
これはすべて完璧に機能します...ほとんどの場合。
1 つのケースでは、回転を許可しないビュー (UITableviewController) から開始します。
自動回転を許可するビューをプッシュし、横向きに回転してから縦向きに戻します。
次に、ビューをポップすると、すべてがうまく表示されます。
しかし、デバイスを回転させると、ステータス バーだけが回転し、上部に空白が残り、現在のビューの左側の一部が覆われます。現在のビューは回転しません (そうあるべきではありません)。ステータスバーだけが前後に回転します。ビューは応答性を維持し、タッチを受け取り、通常どおりに動作し、サイズ変更も回転への応答もありません (そうあるべきではありません)。
この動作は、アプリを強制終了して再起動するまで続きます。それが起こると、私はそれを止める他の方法を見つけられませんでした. 再起動すると、すべてが再び正常に機能し、不確定な期間は正常に機能します。そこに座って、押したり、弾いたり、前後に回転したりしても、問題なく満足できます。
これをシミュレーターで再現することはできませんでした。
それは明確な理由もなく起こります。私はそれを実現することはできません。85% の確率で正常に動作すると言えます。数日または数週間も発生しなかったときに、何度も修正したと思いました。その後、突然、それが再び起こります。
この動作について説明しているフォーラムの投稿が見つからないため、デバッグを開始する場所すら見つかりません。ステータス バーが上から横にスイングし、ビューのサイズが変更されたり、回転したり、応答したりしないのはどうしてでしょうか。それを実現する方法を知っていれば、始める場所があるでしょう。