2011-01-13 133 views
21

我正在创建一个应用程序,其中有一个文本字段& go按钮顶部和web视图下方。 当用户在文本字段中输入URL并点击“Go”按钮时,它将开始在webview中加载页面。 当用户点击某个链接时,我想在文本字段中显示正在加载的页面的URL。 如何获取点击链接的URL?iPhone - UIWebview - 获取点击链接的URL

还有一些网站在那里会重定向到其他网站。所以我的问题是如何显示正在加载的文本字段中的页面的URL?

回答

44

在UIWebViewDelegate类

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType { 
    //CAPTURE USER LINK-CLICK. 
     NSURL *url = [request URL]; 
     yourTextBox.text = [url absoluteString]; 


     return YES; 
} 
+2

当我在webview中加载youtube时,这不起作用...任何我想念。请帮忙。 – Warrior 2012-09-15 03:05:35

+0

@Warrior你有没有找到它的东西?我寻找它; http://stackoverflow.com/questions/18692540/get-clicked-linked-on-uiwebview-navigating-on-m-youtube-com-on-ios – theklc 2013-09-09 06:31:50

5

有用于该目的的委托方法,实现它是这样的:

- (void)webViewDidStartLoad:(UIWebView *)webView { 
    NSURL* url = [webView.request URL]; 
    urlTextField.text = [url absoluteString]; 
} 
+0

这工作正常。但一个问题被注意到。这是我进入http://www.yahoo.com和它的加载罚款。但文本字段正在清除。当我点击雅虎页面中的一些链接,然后再正确显示网址。 – Satyam 2011-01-13 13:31:58

13

如果你特别想通过用户点击链接的网址,然后找到实现此它以这种方式。

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{ 
    if (navigationType == UIWebViewNavigationTypeLinkClicked) { 
     NSLog(@"link clicked = %@",request.mainDocumentURL); 
    } 
    return YES; 
} 

此外,如果你想要的任何请求的URL,从客户端的请求或者通过胶带由您或webView的特别要求的链路上,使用

NSLog(@"link clicked = %@",self.webView.request.mainDocumentURL); 

,如果你想要的任何电流您要么从客户端请求的URL,要么通过您自动打开的页面请求,请使用。

NSLog(@"link clicked = %@",self.webView.request.URL); 

这是我经过漫长的搜索后发现的所有,可能会帮助别人。