我正在开发一个带有UIWebView实例的iOS应用程序。
如果用户触摸Web视图显示的网页中的对象,如何在Objective C中提取有关所触摸对象的元数据(例如HTML元素的“id”)?
[我对Web视图是否被触及不感兴趣,我只对页面的哪个部分被触及并且能够采取行动感兴趣。]
答案 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和本机代码之间进行通信。