2012-03-11 9 views
10

リンク上でタッピングしていない場合、UIWebViewのタップを検出したいと思います。これはどうすればいいですか?私はそれを知っています:リンクでない場合にUIWebViewのタップを検出する方法

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

は、リンクをクリックするたびに呼び出されます。しかし、リンク以外のUIWebViewのタップかどうかはどのようにわかりますか?私はウェブを探していて、見つけたのはthisです。しかし、それはタップがリンク上にあるかどうか私に教えていません

答えて

0

私は以下のメソッドが理論的に動作するはずだと思います。 UIViewコンテナにUIWebViewを入れて、コンテナビューにジェスチャ認識ツールを設定することができます。 UIWebViewによって処理されないタッチイベントは、ビュー階層に渡され、コンテナビューによって傍受されます。

コンテナUIViewでは、適切なハンドラ&を実装すると、タップを検出できます。これがはっきりしていることを願っています...

このアプローチでは果実に恵まれない場合は、javascriptルートに行くことができます。つまり、ウェブページがロードされたときにjavacriptイベントを配置すると、&あなたは行き​​たいです。詳細はこちら - Does UIGestureRecognizer work on a UIWebView?

+2

問題はまだ最悪の部分は、タップジェスチャー認識アイコン – xonegirlz

+0

をトリガーするリンクをクリックされた - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)shouldStartLoadWithRequestが起こるのだろう – xonegirlz

+0

はい]を実行する前に、otherGestureRecognizerが呼び出されます。'gestureRecognizer'では、ジェスチャを無視する方法を見つけなければなりません。 –

1

これはなぜ不可能であるかをお話しましょう。

- (BOOL)webView:(UIWebView *)webview shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType; 
  1. ユーザーがをUIWebViewNavigationTypeLinkClicked代わりのナビゲーションタイプUIWebViewNavigationTypeOtherのリンクをクリックしたとき、それは滑稽に聞こえる場合でも、このデリゲートメソッドの呼び出しがあるでしょう。これは、インターネット上で一般に見られるいくつかのjavascriptベースのページで発生します。

  2. 実際に完全に狂ったように聞こえても、実際にユーザーがリンクをクリックしていないときは、UIWebViewNavigationTypeLinkClickedを複数回呼び出すことになります。一部のWebサイトでは、隠しボタンをシミュレートしたクリックを使用してフレーム/ iframeのコンテンツを埋め込みます。UIWebViewNavigationTypeLinkClickedで複数の呼び出しが発生します。

    特定のブラウザのプライバシー設定をバイパスするには、このような奇妙な方法でコンテンツを埋め込みます( )。 Googleは を控訴しており、 を受け入れないようにブラウザが設定されていても、Safariブラウザ にCookieを設定するためにこのトリックを使用したため、数百万ペナルティを支払わなければならなかった。

したがって、UIWebViewのデリゲートメソッドのみに依存している場合は、クリックがない場合はクリックが発生し、クリックがない場合はクリックされません。したがって、制御されていない環境ではこれは不可能です。

しかし、正確に何をしようとしていますか?

関連する問題