在iPhone上的UIWebView中检测HTML5 <video>上的触摸</video>

时间:2010-09-09 00:38:22

标签: iphone objective-c html5 uiwebview webkit

我希望能够在UIWebView中检测标签上的触摸/点击事件。但它看起来并不像它对那个事件做出反应。有什么想法吗?

videoElement.addEventListener('touchstart', myFunc, false);

也可能是“点击”事件。

2 个答案:

答案 0 :(得分:0)

有一种方法可以做到这一点,但它并不漂亮。

UIWebView允许您运行任意javascript,例如[webview stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('html')[0].innerHTML"]。因此,当用户点击videoElement时,你可以运行javascript来设置特定元素的innerHTML,你可以从这个函数中获取它。

但是,您如何知道何时在Objective-C端运行此功能?嗯,有两种选择。首先(虽然我不建议它,因为它会很慢),你可以设置一个轮询函数,它经常运行以检查stringByEvaluatingJavascriptFromString:函数的值。第二个选项,我认为可能是最好的选项,实际上是将WebView子类化为观察WebView上的触摸。因此,您可以覆盖以下函数:

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    [super touchesEnded:touches withEvent:event];
    NSString *string = [self stringByEvaluatingJavascriptFromString:@"document.getElementById('videoTapped').innerHTML"]
    if ([string isEqual:@"Something"]) {
        // do something here
    }
} 

答案 1 :(得分:0)

设置您的视频元素以在点按时加载特定网址(使用onclick或仅使用普通锚点),然后在网络视图的-webView:shouldStartLoadWithRequest:navigationType:中实施delegate回调以观察URL。