2011-01-13 14 views
21

Estoy creando una aplicación que tiene un campo de texto & botón ir en la parte superior y vista web debajo de ellos. Cuando el usuario ingresa la URL en el campo de texto y hace clic en el botón "Ir", comenzará a cargar la página en la vista web. Cuando el usuario hace clic en algún enlace, quiero mostrar la URL de la página (cargándose) en el campo de texto. ¿Cómo puedo hacer clic en esa URL del enlace?iPhone - UIWebview - Obtener la URL del enlace al que se hizo clic

También hay algunos sitios web que redireccionarán a otro sitio. ¿Entonces mi pregunta es cómo mostrar la URL de la página que se está cargando en el campo de texto?

Respuesta

44

implementar esto en su clase 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

Esto no funciona cuando cargo youtube en la vista web ... Cualquier cosa que extraño. Por favor ayuda. – Warrior

+0

@Warrior ¿Encontró algo para eso? Lo busco http://stackoverflow.com/questions/18692540/get-clicked-linked-on-uiwebview-navigating-on-m-youtube-com-on-ios – theklc

5

Hay un método delegado para tal fin, poner en práctica esta manera:

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

Esto está funcionando bien. Pero un problema notado. Es decir que ingresé a http://www.yahoo.com y está cargando bien. pero el campo de texto se está limpiando. cuando hago clic en algunos enlaces en la página de yahoo, a continuación, muestra la URL correctamente. – Satyam

13

Si desea específicamente la url de enlaces fue presionada por el usuario y luego encontrar de esta manera.

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

Además, si desea que la URL de cualquier solicitud, solicitada desde el lado del cliente, ya sea con cinta adhesiva en un enlace o específicamente solicitada a web View por usted, use

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

y si desea que el cualquier corriente url solicitado por el lado del cliente por usted o por la página que abrió automáticamente, use.

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

Esto es todo lo que he encontrado después de una larga búsqueda, puede ser que ayude a alguien.

+1

Esta es la respuesta correcta. Gracias. –

Cuestiones relacionadas