1

Webで検索しましたが、解決策が見つかりませんでした。

それが私の問題です。

UIWebViewにYouTubeビデオを埋め込みます。動作しますが、フルスクリーン再生に入り、iPadを回転させると、UINavigationBarがシフトします(下の図を参照)。Webビューでビデオプレーヤーを直接制御できないことは知っていますが、それを解決する方法がわかりません。

ありがとう

分割されたナビゲーションバー

4

2 に答える 2

1

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;
}    
于 2014-12-10T02:17:00.773 に答える
0

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 を受け取る方法から道を得ました

于 2012-07-15T10:54:15.110 に答える