10

私の rootViewController は でUITabbarControllerあり、s が含まれていますUINavigationController

回転を制限するために、iOS6 以降、すべてではなく一部のビューで、これらの両方のコントローラーをサブクラス化して、最上位ビューまたは可視ビューの shouldAutorotate 応答を尊重するようにしました。

これはすべて完璧に機能します...ほとんどの場合。

1 つのケースでは、回転を許可しないビュー (UITableviewController) から開始します。

自動回転を許可するビューをプッシュし、横向きに回転してから縦向きに戻します。

次に、ビューをポップすると、すべてがうまく表示されます。

しかし、デバイスを回転させると、ステータス バーだけが回転し、上部に空白が残り、現在のビューの左側の一部が覆われます。現在のビューは回転しません (そうあるべきではありません)。ステータスバーだけが前後に回転します。ビューは応答性を維持し、タッチを受け取り、通常どおりに動作し、サイズ変更も回転への応答もありません (そうあるべきではありません)。

この動作は、アプリを強制終了して再起動するまで続きます。それが起こると、私はそれを止める他の方法を見つけられませんでした. 再起動すると、すべてが再び正常に機能し、不確定な期間は正常に機能します。そこに座って、押したり、弾いたり、前後に回転したりしても、問題なく満足できます。

これをシミュレーターで再現することはできませんでした。

それは明確な理由もなく起こります。私はそれを実現することはできません。85% の確率で正常に動作すると言えます。数日または数週間も発生しなかったときに、何度も修正したと思いました。その後、突然、それが再び起こります。

この動作について説明しているフォーラムの投稿が見つからないため、デバッグを開始する場所すら見つかりません。ステータス バーが上から横にスイングし、ビューのサイズが変更されたり、回転したり、応答したりしないのはどうしてでしょうか。それを実現する方法を知っていれば、始める場所があるでしょう。

4

1 に答える 1

6

UIWindowサブクラス(私の場合は、ステータス バー オーバーレイ)を追加するときに同じ問題が発生しました。

解決策はrootViewController、この newのを実装UIWindow済みのサブクラスに設定することでした。これにより、ステータス バーが回転しないようになっていました。UIViewController-(BOOL)shouldAutorotate

于 2013-09-25T23:31:23.960 に答える