2

更新:解決済み。下部の修正を参照してください。

すべての向きをサポートする私の iPad アプリでは、アプリが横向きで読み込まれると、奇妙なことが起こります。

  1. 残りの部分は横向きですが、アラート ビューは縦向きに表示されます
  2. iPad を横向きから縦向きに回転させても、回転はトリガーされません (また、shouldAutorotate スタイル メソッドもトリガーされません)。
  3. iPad を 180 度 (「別の横向き」に) 回転させると、回転がトリガーされ、その後、iPad は通常のように動作します (つまり、回転すると縦向きと横向きに正しく回転します)。

下のアラートビュー画面。変、変。なぜこれが起こっているのでしょうか?横向きでロードした場合にのみ発生します。縦向きでロードしてから横向きに回転すると問題なく動作します。 土地柄!

解決策:この問題は、アプリの読み込みが完了するとすぐに (より具体的には、アプリのviewDidAppear:メソッドで) メイン ビュー コントローラーの上に UIViewController を (モーダルに) 追加していたために発生しました。

iOS はshouldAutorotateToInterfaceOrientation:、起動後に現在/メインのビュー コントローラーに (4) 回の呼び出しを送信し、現在サポートされている向きを特定します。他の VC をすぐに追加したとき、これは前述のコールの途中で発生しました。したがって、私は1つまたは2つの呼び出ししか受けませんでした(「ポートレート」について、ポートレートで始まるため)。

その後、メインのビュー コントローラーは横向きのデフォルトのサポートが "NO" のままでしたが、新しく追加されたビュー コントローラー (向きについても尋ねられます) は喜んで "はい" と応答するようになりました。

もう一方の VC (横向き) を削除していたら、メインのビュー コントローラーが縦向きで止まっていることに気付きました。そのため、縦向きのビューがあり、その上に横向きのビューがありました。アラートなどは前者の方向性に注意を払っていたため、上記の悲惨な結果になりました。

さらに、縦向きに回転しようとすると、メインのビュー コントローラーが既に縦向きになっているため、回転できませんでした。他のView Controllerがすでに横向きになっているため、横向きに回転することもできませんでした。「ランドスケープですが、他のもの」の回転を行った場合にのみ、両方のビューコントローラーが回転が必要であることに同意し、デバイスが回転しました。

私の場合の修正は、他のコントローラーの作成を少し遅らせることでした。using performSelector:withObject:afterDelay.-- 0 は機能しているように見えましたが、念のために 1 にしました。メインの VC が表示され、次に別の VC が表示されるという、少し奇妙に見えますが、上記よりは優れています。

4

2 に答える 2

0

UIAlertControllerの代わりに使用しUIAlertviewます。

于 2015-06-23T13:54:33.350 に答える
0

この問題は、アプリの読み込みが完了するとすぐに (より具体的には、アプリの viewDidAppear: メソッドで) メイン ビュー コントローラーの上に UIViewController を (モーダルに) 追加していたために発生しました。

解決策の詳細については、上記の投稿を参照してください。

于 2010-10-19T07:34:00.877 に答える