让我们来看看这种情况:
![enter image description here](https://istack.dev59.com/HODAR.webp)
在您的视图中,您有一个按钮。当它被点击时,您想直接播放视频。
为了实现这一点,您将Webview作为模态视图打开:
[self presentModalViewController:videoWebView animated:NO];
对于您的Webview,您应该使用Youtube API来集成和自动播放视频。在此处查看建议的工作示例:https://stackoverflow.com/a/15538968
您会发现视频是在Webview视图的模态视图中启动的。检测视频何时被关闭(当单击“完成”按钮时)的一种方法是在Webview视图类上使用viewDidAppear
。在此方法中,您将关闭Webview视图,但是...当首次启动此视图时,您不希望将其关闭。您可以添加一个布尔属性以避免这种情况。
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
if (_videoLaunched) {
[self dismissModalViewControllerAnimated:YES];
}
}
在
viewDidLoad
方法中,将此属性设置为NO,在
webViewDidFinishLoad
方法(webview的委托方法)中将其设置为YES。
我认为它回答了你问题的一部分。关于检测视频结束,您必须修改
YT_Player.html
文件以侦听状态更改。
ytPlayer = new YT.Player('media_area', {height: '100%', width: '100%', videoId: 'SbPFDcspRBA',
events: {'onReady': onPlayerReady, 'onStateChange': onPlayerStateChange}
function onPlayerStateChange(e) {
var result = JSON.parse(event.data);
if (result.info == 0) {
window.location = "videomessage://end";
}
}
});
然后您可以在Webview视图中捕获事件并像这样解除它:
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSURL *url = request.URL;
if ([[url scheme] isEqualToString:@"videomessage"]) {
[self dismissModalViewControllerAnimated:YES];
return YES;
}
return YES;
}