1

唸り声/トーストアラートのように機能する動的アラートビューを作成しているため、iOSアプリでカスタムウィンドウを作成して表示しています。それはios6で素晴らしい働きをします(うまくいけば、私はこの赤ちゃんをオープンソースにすることができ、あなたはそれをすべてチェックすることができます)

しかし、とにかく、これをios5で実行すると、アラートが存在するウィンドウがデバイス/シミュレーターで回転していないように見えます。何があっても、カスタムウィンドウはポートレートモードのままです。

UIWindowは単なるUIViewサブクラスであるため、優れた「shouldRotate」デリゲートメソッドはありません。

なぜこれがios5で起こっているのに、6では起こっていないのか私はちょっと困惑しています。どんな助けでも大歓迎です^ _ ^

4

2 に答える 2

1

私のウィンドウにはrootviewcontrollerがありますが、これは完全に忘れていました。実装する必要がありました

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation{
    return YES;
}

それを機能させるため。

:-D

于 2012-11-02T17:30:20.153 に答える
0

通常UIWindow、1 つの iOS アプリで の複数のインスタンスを 2 つ使用することはお勧めしません。そうする唯一の正当な理由は、外部画面をサポートすることです。UIView代わりに、理想的には によって管理されるを使用する必要がありますUIViewController

ウィンドウが「回転」しない理由は、単にデバイスの回転に関する通知を受けていないためだと思います (コードを提供していないため、推測することしかできません)。デフォルトでは、 だけがkeyWindowそれらを受け取ります。

代わりに適切に管理された を使用するようにアプリを再設計することを強くお勧めしますUIView。何らかの理由でどうしてもそれを望まない場合は、 のインスタンスを登録してUIWindowを受け取り、UIDeviceOrientationDidChangeNotification(ハンドラーで) 新しい向きを評価し、それに応じてウィンドウのフレームを変更する必要があります (さらに、向きの変更に対応して行われます)

于 2012-11-01T19:00:14.537 に答える