2011-03-09 27 views
27

En mi aplicación, cierta página HTML se carga en una vista web. Necesito hacer clic en cierta etiqueta como "neurona" y debería mostrar su descripción en otra vista. ¿Cómo puedo hacer que la etiqueta haga clic y haga clic en la etiqueta en la vista web?Enlace UIWebView Haga clic en

Respuesta

31

¿Por "etiqueta" quiere decir "enlace"? Si es así, dele a UIWebView un delegado e implemente webView:shouldStartLoadWithRequest:navigationType. Se llamará cada vez que el usuario toque un enlace en UIWebView.

+5

En realidad, no siempre se llamará. Por ejemplo, en algunas páginas de m.youtube.com. – cprcrack

+0

@cprcrack ¿sabes por qué no se llamará? Veo un comportamiento similar en algunos otros sitios. – vinnybad

5

La implementación de esto es simple. Cada vez que un WebView quiere cargar algo, se llamará

webView:shouldStartLoadWithRequest:navigationType 

que pasa en la URL asociada con el hipervínculo. Aquí puede analizar el argumento NSURLRequest y manejar lo que desea hacer en el código nativo.

(Recuerde, no retorno para detener la UIWebView del hecho de cargar el enlace después)

65

Uso del Delegado para determinar el tipo de navegación!

Mi fragmentos

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

Creo que esto debería marcarse como la mejor respuesta. –

+1

Si tiene incrustado Instagram y hace clic en el enlace del perfil, no funciona. Detecta el tipo como Otro, lo cual es extraño. – Nemanja

Cuestiones relacionadas