2011-01-13 174 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); 

這是我經過漫長的搜索後發現的所有,可能會幫助別人。