2

奇妙な問題に遭遇しました。解決の助けが必要です。私のアプリは常に縦向きモードで実行されます - 私は明示的にそのようにしたいと思っています。アプリの 1 か所に、期待どおりに正常に動作する UIWebView があります。この Web ビューは常に表示されるわけではありませんが、メイン ビューに動的に追加され、ユーザーの操作に基づいて削除されます (つまり、必要な場合にのみ表示されます)。

さて、時々このビューで私はYouTubeビデオを持っているかもしれません. WebView には<iframe>、YouTube 埋め込み用の が含まれているだけです。ユーザーが Web ビューのビデオ プレビュー フレームをクリックすると、フルスクリーンのビデオ ビューアが起動してビデオが再生されますが、これは問題ありません。

ただし、再生中にユーザーが電話を回転させると、フルスクリーンのビデオ プレーヤーが回転し、ビデオが横向きモードで再生されます。ビデオが停止し、ユーザーが電話を縦向きモードに戻さずに「完了」ボタンを押すと、ビデオプレーヤーが閉じられ、ユーザーはアプリに戻りますが、レイアウトも回転します! ビデオ ビューだけでなく、レイアウト全体 (ツールバー、ナビゲーション コントローラーなど) も含まれます。

ローテーションしたくない!アプリ内のすべてをポートレート モードのままにしたいだけです。さらに、電話を縦向きに戻しても、アプリは横向きのままです。

現在、テストする物理的な電話がないため、これまでシミュレーターでのみテストしたことに注意してください。問題を示すために、単純な (低品質!) ビデオ (古い電話カメラで画面上のシミュレーターを撮影しただけ) を作成しました - ビデオはこちら: http://shchuka.com/hosting/rotation_problem.mp4

私がそれについて何ができるか考えていますか?

4

2 に答える 2

0

これを追加するか、変更します。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

    return (UIInterfaceOrientation == UIInterfaceOrientationPortrait);

}

これにより、すべての回転が防止され、アプリは縦向きモードでのみ機能します。このreturnステートメントを IF ステートメント内に配置して、特定の状況下でローテーションを許可することができます。

于 2012-04-13T17:00:33.330 に答える
0

私はときどき appDelegate ウィンドウにビューを追加することがありますが、それを処理する VC がないため、自分のローテーション コードを明示的に呼び出さなければならないという厄介な副作用がありました。プラス面では、それはあなたのニーズに理想的である可能性があることを意味するかもしれません -

[[[[UIApplication sharedApplication] delegate] window] addSubview:myWebView];

...アプリの向きなどによっては、最初にビューを読み込む前に、表示する前に webView を回転させる必要がある場合があります。

于 2012-04-14T07:19:26.440 に答える