2011-01-13 14 views
21

Tworzę aplikację, która ma pole tekstowe & przycisk Przejdź na górze i widok WWW poniżej. Po wprowadzeniu adresu URL w polu tekstowym i kliknięciu przycisku "Rozpocznij" rozpocznie się ładowanie strony w widoku sieciowym. Gdy użytkownik kliknie na jakiś link, chcę pokazać URL strony (ładowanej) w polu tekstowym. Jak uzyskać kliknięcie adresu URL łącza.iPhone - UIWebview - uzyskaj URL klikniętego linku

Dostępne są również niektóre witryny, które przekierują do innej witryny. Moje pytanie brzmi: jak wyświetlić URL strony ładowanej w polu tekstowym?

Odpowiedz

44

zaimplementować to w swojej klasie 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

To nie działa, gdy ładuję youtube w widoku sieciowym ... Wszystko, za czym tęsknię. Proszę pomóż. – Warrior

+0

@Warrior czy znalazłeś coś dla niego? Szukam tego; http://stackoverflow.com/questions/18692540/get-clicked-linked-on-uiwebview-navigating-on-m-youtube-com-on-ios – theklc

5

Jest to metoda delegata do tego celu, wdrożyć go tak:

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

To działa poprawnie. Ale zauważyłem problem. To jest wpisane http://www.yahoo.com i ładowanie grzywny. ale pole tekstowe jest usuwane. kiedy klikam kilka linków na stronie yahoo, a następnie odpowiednio pokazuje adres URL. – Satyam

13

Jeśli konkretnie chcesz url linki klikane przez użytkownika, a następnie znaleźć to w ten sposób.

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

Także jeśli chcesz url każdym wniosku, zażądać od strony klienta albo przez taping na link lub specjalnie Zwrócono Webview przez ciebie, użyj

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

i jeśli chcesz żadnego prądu URL żądany od strony klienta przez ciebie lub jest wymagany przez stronę, którą otworzyłeś automatycznie, użyj.

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

To wszystko, co znalazłem po długich poszukiwaniach, może pomóc komuś.

+1

To jest poprawna odpowiedź. Dzięki. –

Powiązane problemy