6

私のアプリは2つのUIWindowsを使用しています。最初に示されているのは、縦向きにのみ回転するViewControllerを備えたTabBarコントローラーです。ここまではすべてうまくいきました。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
 return (UIInterfaceOrientationIsPortrait(interfaceOrientation));
}

もう一方のウィンドウには、すべての方向に回転するUIViewControllerがあります。

問題は、2番目のウィンドウを表示すると

[secondWindow makeKeyAndVisible];

そして、最初のものに戻ります

[firstWindow makeKeyAndVisible];

ステータスバーはすべての方向に回転し、イベントshouldAutorotateToInterfaceOrientationは発生しません。どうすれば問題を解決できますか?

4

2 に答える 2

5

1つのアプリに複数のUIWindowsを含めることは問題ありませんが、ここでの注意点は、AppleのコードがすべてのUIWindowをチェックし、最上位のViewControllerが特定の回転を許可するかどうかを確認するように見えることです。これらのウィンドウのいずれかが回転を許可している場合、UIWindowが最前面にあるか表示されているかに関係なく、ステータスバーが回転します。

私自身のアプリでは、使用していないUIWindowを非表示にし、関連するUIViewControllersにisHiddenチェックを追加して、ウィンドウが現在非表示になっている場合に回転を許可しないようにしました。

于 2011-07-26T22:11:15.113 に答える
1

1つのアプリに複数のUIWindowsを含めることは問題ありませんが、ここでの注意点は、AppleのコードがすべてのUIWindowをチェックし、最上位のViewControllerが特定の回転を許可するかどうかを確認するように見えることです。

答えによると、多くのテストを行い、ステータスバーの回転はすべてのウィンドウの一番上のビューコントローラーに依存するという結論に達しました。

于 2013-08-23T05:16:09.280 に答える