3

テーブルビューを使用して同じセルにいくつかのビデオを追加しました。各セルには独自の Web ビューがあります。ビデオは、次のコードを使用して webview で再生されます

NSString *embedHTML = @"<html><head>\<style type=\"text/css\">\body {\background-color:transparent;\color: white;\}\</style>\<script>\function load({document.getElementById(\"yt\").play();}\</script>\</head><body onload=\"load()\"style=\"margin:0\">\<video id=\"yt\" src=\"%@\" \width=\"%0.0f\" height=\"%0.0f\" autoplay controls></video>\</body></html>";
NSString *html = [NSString stringWithFormat:embedHTML, urlString, videoView.frame.size.width, videoView.frame.size.height,thumbnailImageLink];
[videoView loadHTMLString:html baseURL:nil];

それは絶対にうまくいきます。再生ボタン付きのサムネイル動画を表示します。[再生] ボタンをタップすると、ビデオ プレーヤーがフル スクリーン モードで開き、すべてのコントロールが表示されます。

ここでの主な問題は、完了ボタンを押すとフルスクリーンモードが消えることです

しかし、ビデオのダウンロードはまだ続きます。全く良くない

たとえば、Video1 を開き、[完了] ボタンを押してから、video2 を開きましたが、video1 がまだダウンロード中であるため、video2 のインターネット速度が低下しています。

質問は、全画面表示の [完了] ボタンが押されたときにダウンロードを強制的に停止する方法はありますか?

注: ビデオのリスト、つまりn ビデオ = n webviewsがあるため、どの Web ビューがビデオを再生しているかを検出することはできません。WebView にアクセスできる場合は、ダウンロードを停止し、サムネイルをタップするまで開始されない新しいコンテンツを取得できるように、それをリロードします。

より具体的には、ビデオが再生されたとき、および [完了] ボタンが押されたときにアクセスできます。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(videoPlayStarted:) name:@"UIMoviePlayerControllerDidEnterFullscreenNotification" object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(videoPlayFinished:) name:@"UIMoviePlayerControllerDidExitFullscreenNotification" object:nil];

そして、次の方法でアクセスできます

BOOL isVideoInFullScreenMode;
-(void)videoPlayStarted:(NSNotification *)notification{
//Your stuff here
   isVideoInFullScreenMode = YES;
}

-(void)videoPlayFinished:(NSNotification *)notification{
    //Your stuffs here
    isVideoInFullScreenMode = NO;
}
4

1 に答える 1

1

Webビューで何が起こっているかを制御することはできません。デザインの問題だと思います。Webビューはすべての人にとって魔法の治療法ではありません。コードを制御したい場合は、自分でコードを書く必要があります。また、これをApple(http://bugreporter.apple.com)で盗聴したことを願っています。

于 2012-10-02T12:50:22.337 に答える