3

我使用 tableview 在同一单元格中添加了一些视频。每个单元格都有自己的 webview。使用以下代码在 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 个网络视图,因此无法检测到哪个网络视图正在播放视频。如果我能够访问 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

您无法控制 webview 中发生的事情。我认为这是一个设计问题。Webviews 并不是所有人的灵丹妙药。如果你想控制它,你需要自己编写代码。我也希望你已经用苹果 (http://bugreporter.apple.com) 解决了这个问题。

于 2012-10-02T12:50:22.337 回答