2011-03-09 3 views
27

私のアプリでは、特定のHTMLページがwebviewに読み込まれます。私は「ニューロン」のような特定のラベルをクリックする必要があり、その説明を別のビューで表示する必要があります。どのように私はラベルをクリックして、webviewでラベルをクリックすることができますか?UIWebViewリンクをクリック

答えて

31

"ラベル"とは "リンク"を意味しますか?その場合は、UIWebViewに代理人を与え、webView:shouldStartLoadWithRequest:navigationTypeを実装します。ユーザーがUIWebViewでリンクをタップすると、いつでも呼び出されます。

+5

実際には常に呼び出されることはありません。たとえば、一部のm.youtube.comページです。 – cprcrack

+0

@cprcrackなぜ呼び出されないのか分かりますか?他のサイトでも同様の動作が見られます。 – vinnybad

5

これを実装するのは簡単です。ウェブビューで何かを読み込もうとするたびに、ハイパーリンクに関連付けられたURLに渡される

webView:shouldStartLoadWithRequest:navigationType 

が呼び出されます。ここでは、NSURLRequest引数を解析し、ネイティブコードで何を実行するかを処理できます。

(実際には、その後リンクをロードからのUIWebViewを停止するにはNOを返し、覚えておいてください)

65

ナビゲーションタイプを決定するための委任を使用してください!

私のスニペット

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{ 


    if (navigationType == UIWebViewNavigationTypeLinkClicked){ 

     NSURL *url = request.URL; 
     [self openExternalURL:url];//Handle External URL here 

    } 

    return YES; 

} 
+1

これは最善の答えとしてマークする必要があります。 –

+1

Instagramの埋め込みを行い、プロファイルリンクをクリックしても機能しません。これは、タイプが奇妙な「その他」として検出されます。 – Nemanja

関連する問題