我想我已经涵盖了stackoverflow中大部分(如果不是全部)相关的帖子。不幸的是,我仍然找不到答案。
基本上,我的应用程序包含一个UIWebview,它可以通过(YouTube JS API)自动播放youtube视频
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"YT_Player" ofType:@"html"] isDirectory:NO]]];
每x分钟都会调用包含此代码行的函数,其中x来自数据库。这是通过
[self performSelector:@selector(resetVideo) withObject:self afterDelay:x];
整个功能是这样的:
-(void) resetVideo {
[webView removeFromSuperview];
webView.delegate = nil;
[webView stopLoading];
[webView release];
webView = [[UIWebView alloc] initWithFrame:CGRectMake(12, 20, 300, 200)];
webView.delegate = self;
webView.userInteractionEnabled = NO;
webView.allowsInlineMediaPlayback = YES;
[webView setMediaPlaybackRequiresUserAction:NO];
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"YT_Player" ofType:@"html"] isDirectory:NO]]];
[self.view addSubview:webView];
}
另外,在webViewDidFinishLoad中:
- (void)webViewDidFinishLoad:(UIWebView *)webView{
//call the javascript in YT_Player.html to set the video code, which comes
from the db as well
// done by using stringByEvaluatingJavaScriptFromString:scriptStr
}
在应用启动时,它始终可以正常播放youtube视频,然后当下一个视频尝试播放时,它会在UIWebView区域中仅显示为白屏。此外,在我看来,这个问题仅存在于真实设备中(不存在于模拟器中)。
更多信息:我定义了UIWebView * webView; 在.h中,我尝试实现类似
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
但是没有显示错误。
任何建议将不胜感激。
编辑:经过进一步调查后,问题可能是由于未触发onPlayerReady()事件。
当您一遍又一遍地创建UIWebView时,我已经看到了一些怪异的东西。与其尝试这样做,不如尝试调用JavaScript函数loadVideoById()
呢?要在Objective-C中执行此操作,您可以致电:
[webView stringByEvaluatingJavaScriptFromString:"loadVideoById('kt2n27-pi_s')"];
为了使iframe播放器更易于在iOS应用中嵌入,我们最近发布了一个可通过CocoaPods安装的帮助程序库。一探究竟。我们提出的建议之一是,如果可以的话,不要一遍又一遍地重新创建UIWebView。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句