2011-01-13 14 views
21

Ich erstelle eine App, die ein Textfeld & Go-Taste oben und Web-Ansicht unter ihnen hat. Wenn der Benutzer die URL in das Textfeld eingibt und auf die Schaltfläche "Go" klickt, wird die Seite in webview geladen. Wenn der Benutzer auf einen Link klickt, möchte ich die URL der Seite (die geladen wird) im Textfeld anzeigen. Wie kann ich die URL des angeklickten Links abrufen?iPhone - UIWebview - Holen Sie sich die URL des Links geklickt

Auch einige Websites sind dort, die auf eine andere Website umleiten werden. Also meine Frage ist, wie man die URL der Seite zeigt, die in das Textfeld geladen wird?

Antwort

44

Implementieren Sie dies in Ihrer UIWebViewDelegate Klasse

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

Das funktioniert nicht, wenn ich youtube in webview lade ... Alles was ich vermisse. Bitte helfen Sie. – Warrior

+0

@Warrior hast du etwas dafür gefunden? Ich suche danach; http://stackoverflow.com/questions/18692540/get-clicked-linked-on-uiwebview-navigating-on-m-youtube-com-on-ios – theklc

5

Es gibt eine delegierte Methode zu diesem Zweck implementieren es wie folgt aus:

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

Das funktioniert gut. Aber ein Problem ist aufgefallen. Das heißt, ich habe http://www.yahoo.com eingegeben und es ist gut geladen. aber Textfeld wird gelöscht. wenn ich auf einige links in yahoo page klicke, dann wird die URL korrekt angezeigt. – Satyam

13

Wenn Sie speziell die URL-Links geklickt durch Benutzer wollen, dann finden es auf diese Weise.

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

Auch wenn Sie die URL jeder Anfrage möchten, von der Client-Seite angefordert entweder auf einen Link Taping oder speziell von WebView von Ihnen angeforderte,

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

verwenden und wenn Sie möchten, die alle aktuellen URL von Clientseite entweder von Ihnen angefordert oder sie werden von der Seite, die Sie automatisch geöffnet haben, verwendet.

Das ist alles, was ich nach einer langen Suche gefunden habe, kann es jemand helfen.

+1

Dies ist die richtige Antwort. Vielen Dank. –

Verwandte Themen