2011-01-13 18 views
21

Sto creando un'app che ha un campo di testo & pulsante go in alto e vista web sotto di loro. Quando l'utente inserisce l'URL nel campo di testo e fa clic sul pulsante "Vai", inizierà a caricare la pagina in Webview. Quando l'utente fa clic su qualche collegamento, voglio mostrare l'URL della pagina (in fase di caricamento) nel campo di testo. Come posso ottenere che l'URL del collegamento sia stato cliccato.iPhone - UIWebview - Ottieni l'URL del link cliccato

Sono presenti anche alcuni siti Web che reindirizzano su un altro sito. Quindi la mia domanda è come mostrare l'URL della pagina caricata nel campo di testo?

risposta

44

implementare questo nella tua classe 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

Questo non funziona quando carico youtube in webview ... Tutto quello che mi manca. Per favore aiuto. – Warrior

+0

@Warrior hai trovato qualcosa per questo? Lo cerco; http://stackoverflow.com/questions/18692540/get-clicked-linked-on-uiwebview-navigating-on-m-youtube-com-on-ios – theklc

5

C'è un metodo delegato a tal fine, implementare in questo modo:

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

Questo funziona correttamente. Ma un problema notato. Cioè ho inserito http://www.yahoo.com e la sua ammenda di caricamento. ma il campo di testo viene cancellato. quando clicco su alcuni link nella pagina di yahoo, poi in avanti mostra correttamente l'URL. – Satyam

13

Se si desidera specificamente l'URL del link cliccati dall'utente poi trovare in questo modo.

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

Inoltre, se si desidera che l'URL di qualsiasi richiesta, richiesto dal lato client sia con nastro adesivo su un link o specificamente richiesto da WebView da te, utilizzare

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

e se si desidera che l'alcuna corrente url richiesto dal cliente o da te o richiesto dalla pagina che hai aperto automaticamente, usa.

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

Questo è tutto ciò che ho trovato dopo una lunga ricerca, potrebbe essere che aiuterà qualcuno.

+1

Questa è la risposta corretta. Grazie. –

Problemi correlati