2011-01-13 6 views
21

私はテキストフィールド&の下にボタンを押し、その下にウェブビューを作成するアプリを作成しています。 ユーザがテキストフィールドにURLを入力して「実行」ボタンをクリックすると、Webviewでページのロードが開始されます。 ユーザーがリンクをクリックすると、テキストフィールドにページのURL(ロード中)を表示したいと考えています。 クリックしたリンクのURLを取得する方法を教えてください。iPhone - UIWebview - クリックしたリンクのURLを取得

他のサイトにリダイレクトされるウェブサイトもあります。だから私の質問は、テキストフィールドにロードされているページのURLを表示する方法ですか?あなたは、特にその後、見つけるユーザーがクリックしたリンクのURLをしたい場合は

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

答えて

44

は、あなたの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

これは、私がYouTubeでwebviewを読み込んでもうまくいかない...何かが恋しい。助けてください。 – Warrior

+0

@ウォリアーあなたは何かを見つけましたか?私はそれを探します。 http://stackoverflow.com/questions/18692540/get-clicked-linked-on-uiwebview-navigating-on-m-youtube-com-on-ios – theklc

5

このようにそれを実装し、そのためのデリゲートメソッドがありますそれはこのように。あなたは、

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

を使用しますことにより、または特別のWebViewから要求されたリンクの上にテーピングのいずれかによって、クライアント側から要求されたすべての要求のURLを、必要とあればまた

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

あなたはどんな電流をしたい場合クライアント側からリクエストされたURL、または自動的に開いたページから要求されたURL。

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

これは、私が長い検索の後で見つけたもので、誰かを助けるものかもしれません。

+0

これは正常に動作しています。しかし、問題は気づいた。それは私がhttp://www.yahoo.comに入力して、正常に読み込んでいます。テキストフィールドはクリアされています。私はyahooのページのいくつかのリンクをクリックし、その後、URLを適切に表示します。 – Satyam

13

でこれを実装します。

+1

これは正解です。ありがとう。 –

関連する問題