2011-01-13 31 views
21

Tôi đang tạo ứng dụng có trường văn bản & nút đi ở trên cùng và chế độ xem web bên dưới chúng. Khi người dùng nhập URL vào trường văn bản và nhấp vào nút "Tìm", nó sẽ bắt đầu tải trang trong chế độ xem web. Khi người dùng nhấp vào một số liên kết, tôi muốn hiển thị URL của trang (đang được tải) trong trường văn bản. Làm cách nào để tôi nhận được URL của liên kết được nhấp.iPhone - UIWebview - Nhận URL của liên kết được nhấp vào

Cũng có một số trang web sẽ chuyển hướng đến một số trang web khác. Vì vậy, câu hỏi của tôi là làm thế nào để hiển thị URL của trang đang được tải trong trường văn bản?

Trả lời

44

Thực hiện này trong lớp UIWebViewDelegate bạn

- (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

Điều này không hoạt động khi tôi tải youtube trong webview ... Bất cứ điều gì tôi bỏ lỡ. Hãy giúp tôi. – Warrior

+0

@Warrior bạn đã tìm thấy thứ gì đó cho nó? Tôi tìm kiếm nó; http://stackoverflow.com/questions/18692540/get-clicked-linked-on-uiwebview-navigating-on-m-youtube-com-on-ios – theklc

5

Có một phương pháp đại biểu cho mục đích đó, thực hiện nó như thế này:

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

Điều này hoạt động tốt. Nhưng một vấn đề nhận thấy. Đó là tôi đã nhập http://www.yahoo.com và tiền phạt của nó. nhưng textfield đang được xóa. khi tôi nhấp vào một số liên kết trong trang yahoo, sau đó trở đi hiển thị URL đúng cách. – Satyam

13

Nếu bạn đặc biệt muốn url của liên kết được nhấp bởi người dùng sau đó tìm theo cách này.

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

Ngoài ra nếu bạn muốn url của bất kỳ yêu cầu, yêu cầu từ phía khách hàng bằng cách taping vào một liên kết hoặc yêu cầu cụ thể từ WebView của bạn, sử dụng

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

và nếu bạn muốn bất kỳ hiện tại url được yêu cầu từ phía máy khách hoặc bởi bạn hoặc chúng được yêu cầu bởi trang bạn đã mở tự động, sử dụng.

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

Đây là tất cả những gì tôi đã tìm thấy sau một thời gian dài tìm kiếm, có thể sẽ giúp ai đó.

+1

Đây là câu trả lời đúng. Cảm ơn. –

Các vấn đề liên quan