web-dev-qa-db-ja.com

iPhone-UIWebview-クリックされたリンクのURLを取得します

上部にテキストフィールドと移動ボタンがあり、その下にWebビューがあるアプリを作成しています。ユーザーがテキストフィールドにURLを入力し、[実行]ボタンをクリックすると、Webビューでページの読み込みが開始されます。ユーザーがリンクをクリックすると、(読み込まれている)ページのURLがテキストフィールドに表示されます。リンクのそのURLをクリックするにはどうすればよいですか。

また、他のサイトにリダイレクトするWebサイトもあります。だから私の質問は、テキストフィールドにロードされているページのURLを表示する方法ですか?

21
Satyam

これを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;   
}
44
Mihir Mehta

ユーザーがクリックしたリンクのURLが特に必要な場合は、この方法で見つけてください。

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

また、リンクをタップしてクライアント側から要求された、またはWebViewから特に要求された要求のURLが必要な場合は、次を使用します。

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

また、クライアント側から要求された現在のURLが必要な場合、または自動的に開いたページから要求された場合は、を使用します。

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

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

12
iHulk

その目的のためのデリゲートメソッドがあり、次のように実装します。

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