触摸UIWebView

时间:2012-02-02 16:26:03

标签: javascript ios uiwebview

我正在开发一个带有UIWebView实例的iOS应用程序。

如果用户触摸Web视图显示的网页中的对象,如何在Objective C中提取有关所触摸对象的元数据(例如HTML元素的“id”)?

[我对Web视图是否被触及不感兴趣,我只对页面的哪个部分被触及并且能够采取行动感兴趣。]

1 个答案:

答案 0 :(得分:3)

您可能需要在JavaScript版本中执行此操作。在你的webview中设置一些javascript来监控点击(例如element.onclick = function(){...},或者使用jQuery,如果这更容易)。

现在,您可以使用构建的网址调出应用中的本机代码,然后使用webview委托拦截它,例如

//in your web page, in javascript

myDiv.onclick = function() { document.location.href = 'http://madeupdomain/' + this.id};

//webview delegate in cocoa

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSURL *URL = [request URL];
    NSString *host = URL.host;
    if ([host isEqualToString:@"madeupdomain"])
    {
        NSString *theDivID = URL.path;
        //now do something based on the div id value

        return NO;
    }
    return YES;
}

这实质上就像PhoneGap这样的框架在webview和本机代码之间进行通信。