再生終了時に何かする
前回の続編的なものです。
再生&フルスクリーンをプログラムからやったので、終了時も何かやってみよう!です。
javascriptで何かさせる場合は前回の
[webView stringByEvaluatingJavaScriptFromString:@"var v = document.getElementById('video');v.webkitEnterFullscreen();"];
に少し手を加えて
[webView stringByEvaluatingJavaScriptFromString:@"var v = document.getElementById('video');v.webkitEnterFullscreen(); v.addEventListener('ended',function(){var v = document.getElementById('video');v.webkitExitFullScreen();});"];
こんな感じに実装します。
この例の場合、動画の最後まで再生したあとにフルスクリーンを解除するようにしています。
objective-cで何かしたいよ!
という場合、javascriptから直接コールバックする方法はないみたいですが、裏技的にdocument.locationを利用することでそれっぽい動きをさせることが出来ます。
さっきの例を少しいじって
[webView stringByEvaluatingJavaScriptFromString:@"var v = document.getElementById('video');v.webkitEnterFullscreen(); v.addEventListener('ended',function(){document.location='hoge:fuga:param1:param2';});"];
とした上で、objective-c側で
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { NSString *requestString = [[request URL] absoluteString]; NSArray *components = [requestString componentsSeparatedByString:@":"]; if (1 < [components count] && [[components objectAtIndex:0] isEqualToString:@"hoge"]) { if ([[components objectAtIndex:1] isEqualToString:@"fuga"]) { NSLog(@"%@", [components objectAtIndex:2]); // param1 NSLog(@"%@", [components objectAtIndex:3]); // param2 変数を渡すことも出来ます return NO; } } return YES; }
でOKです。
[webView setDelegate:self];
をお忘れなく!!
こっちはここを参考にしました。というかほとんど丸写しですね。
http://www.codingventures.com/2008/12/using-uiwebview-to-render-svg-files/