Webで検索しましたが、解決策が見つかりませんでした。
それが私の問題です。
UIWebViewにYouTubeビデオを埋め込みます。動作しますが、フルスクリーン再生に入り、iPadを回転させると、UINavigationBarがシフトします(下の図を参照)。Webビューでビデオプレーヤーを直接制御できないことは知っていますが、それを解決する方法がわかりません。
ありがとう
Webで検索しましたが、解決策が見つかりませんでした。
それが私の問題です。
UIWebViewにYouTubeビデオを埋め込みます。動作しますが、フルスクリーン再生に入り、iPadを回転させると、UINavigationBarがシフトします(下の図を参照)。Webビューでビデオプレーヤーを直接制御できないことは知っていますが、それを解決する方法がわかりません。
ありがとう
UIWebView Video は MPMoviePlayerViewController を使用しないか、開発者専用であるため、MPMoviePlayerNotification を使用してこの問題を解決する方法はありません。しかし、このバグを修正する別の方法があります。
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(handleStatusBarFrameDidChange)
name:UIApplicationDidChangeStatusBarFrameNotification
object:nil];
- (void)handleStatusBarFrameDidChange {
self.navigationController.navigationBarHidden = YES;
self.navigationController.navigationBarHidden = NO;
}
iPhoneアプリでも同様の問題に遭遇しました。
これが正しい方法なのだろうかと思いますが、今のところ以下のコードで解決しました。
1. webivew の initialize メソッドにオブザーバーを追加しました。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(youTubeStarted:) name:@"UIMoviePlayerControllerDidEnterFullscreenNotification" object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(youTubeFinished:) name:@"UIMoviePlayerControllerDidExitFullscreenNotification" object:nil];
オブザーバーが不要になったら、オブザーバーを削除する必要があります。コードを webview の dealloc メソッドに入れただけです。
[[NSNotificationCenter defaultCenter] removeObserver:self];
2. ムービーの開始時にナビゲーション バーを非表示にし、ムービーの終了時に再び表示します。
* コード内の contentsViewController は、私の webview の所有者です。私の場合だけです。
- (void)youTubeStarted:(NSNotification *)notification
{
self.contentsViewController.navigationController.navigationBarHidden = YES;
}
- (void)youTubeFinished:(NSNotification *)notification
{
self.contentsViewController.navigationController.navigationBarHidden = NO;
}
UIWebView 埋め込み YouTube 動画再生から NSNotifications を受け取る方法から道を得ました