2011-03-09 188 views
27

在我的应用程序中,某个HTML页面被加载到webview中。我需要点击某个标签,如“神经元”,并在另一个视图中显示其描述。如何在web视图中获得标签点击和点击标签?UIWebView链接点击

回答

31

“label”的意思是“link”?如果是这样,给UIWebView一个委托,并实施webView:shouldStartLoadWithRequest:navigationType。只要用户点击UIWebView中的链接,就会调用它。

+5

其实这并不总是被调用。例如,在某些m.youtube.com页面中。 – cprcrack

+0

@cprcrack你知道为什么它不会被称为?我在其他一些网站上看到了类似的行为。 – vinnybad

5

实现这很简单。每当webview想要加载内容时,它都会调用

webView:shouldStartLoadWithRequest:navigationType 

它传递与超链接相关的url。在这里,你可以解析NSURLRequest参数并处理你想在本地代码中执行的操作。

(记住,返回NO从实际加载之后的链接停止的UIWebView)

65

使用委托来确定导航类型!

我摘录

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{ 


    if (navigationType == UIWebViewNavigationTypeLinkClicked){ 

     NSURL *url = request.URL; 
     [self openExternalURL:url];//Handle External URL here 

    } 

    return YES; 

} 
+1

我认为这应该被标记为最佳答案。 –

+1

如果你有instagram嵌入并点击个人资料链接,它不起作用。它将类型检测为Other,这很奇怪。 – Nemanja