2011-03-09 16 views
27

W mojej aplikacji do strony internetowej jest ładowana określona strona HTML. Muszę kliknąć na określoną etykietę, taką jak "neuron", i wyświetlić jej opis w innym widoku. Jak mogę uzyskać etykietę kliknięcia i kliknięcia etykiety w widoku internetowym?Link do interfejsu UIWebView Kliknij

Odpowiedz

31

Przez "etykietę" masz na myśli "link"? Jeśli tak, daj UIWebView delegatowi i implementuj webView:shouldStartLoadWithRequest:navigationType. Będzie on wywoływany za każdym razem, gdy użytkownik kliknie link w UIWebView.

+5

Właściwie to nie zawsze będzie się nazywać. Na przykład na niektórych stronach m.youtube.com. – cprcrack

+0

@ cprcrack Czy wiesz, dlaczego nie zostanie wywołana? Podobne zachowanie występuje w niektórych innych witrynach. – vinnybad

5

Wdrażanie tego jest proste. Everytime WebView chce załadować coś, to zadzwoń

webView:shouldStartLoadWithRequest:navigationType 

przechodzący w url związanego z hiperłącza. Tutaj możesz przeanalizować argument NSURLRequest i obsłużyć to, co chcesz zrobić w natywnym kodzie.

(Pamiętaj, że nie zwraca się zatrzymać UIWebView od rzeczywiście ładuje link potem)

65

Używaj Delegat do określenia typu nawigację!

My Snippet

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

Myślę, że to powinno być oznaczone jako najlepsza odpowiedź. –

+1

Jeśli masz wbudowany Instagram i klikniesz link profilu, to nie działa. Wykrywa typ jako Inny, co jest dziwne. – Nemanja

Powiązane problemy