【发布时间】:2013-03-21 00:15:53
【问题描述】:
我在这里看到了很多关于这个问题的帖子,但仍然找不到这个问题的完美答案。
所以我有一个表格视图,每个单元格里面都有一个播放按钮。当用户点击播放按钮时,我将UIWebView 添加到此单元格,并播放 YouTube 视频。
static NSString *youTubeVideoHTML = @"<html>\
<body style=\"margin:0;\">\
<iframe class=\"youtube-player\" type=\"text/html\" width=\"%0.0f\" height=\"%0.0f\" src=\"http://www.youtube.com/embed/%@\" frameborder=\"0\">\
</iframe>\
</body>\
</html>";
- (void)playVideoWithId:(NSString *)videoId {
NSString *html = [NSString stringWithFormat:youTubeVideoHTML, self.frame.size.width, self.frame.size.height, videoId];
[self loadHTMLString:html baseURL:nil];
}
问题:
此代码实际上并没有像我想要的那样播放视频,它只是启动 YouTube 播放器并使用 YouTube 红色播放按钮显示它。只有当用户点击红色按钮时,视频才会开始播放。
所以用户必须点击两个按钮,直到视频开始 - 这不是最好的用户体验......
就像我说的那样,我看到了很多关于这个问题的帖子,有些根本不起作用,有些有效,但有些问题让我很困扰。
我在@ilias 的this post 中找到了一个可行的解决方案,他展示了如何通过从文件加载HTML(而不是像我这样的字符串)来实现这一点,这个方法的问题在于我播放的每个视频都需要:
加载htm文件->在其中嵌入视频ID->将文件写入光盘->现在我可以播放视频。
奇怪的是,此解决方案仅在您从文件加载 Web 视图请求时才有效,如果我尝试从等于文件内容的字符串加载请求,则不起作用。
【问题讨论】:
-
-
在 iFrame 标签中包含自动播放
-
@Manohar 不起作用
-
[[NSNotificationCenter defaultCenter] addObserver:self 选择器:@selector(playbackStateDidChange:) name:@"MPAVControllerPlaybackStateChangedNotification" object:nil];让我知道您收到此通知后
-
@Manohar:用
delegate代替是什么意思?
标签: ios objective-c youtube uiwebview youtube-api