2012-01-03 7 views
0

UIWebViewを使用してHTMLコンテンツを表示しているため、ユーザーがリンクでない場所をクリックしたときに何らかのアクションが発生します。UIWebViewでは、ユーザーがリンクではない場所をクリックしたときを特定することは可能ですか?

私はUITapGestureRecognizerを追加しましたが、handleTapGestureが呼び出された時点で、ユーザーが画面のリンクされた部分またはリンクされていない部分をクリックしたかどうかはまだわかりません。 @selector(performAction)withObject:自己afterDelay:N]

を次にshouldStartLoadWithRequestは、その後私はperformActionはそれが実際に実行すべきかどうかをチェックするフラグを設定する呼び出された場合、私はperformSelectorを添加handleTapGesture内でこの問題を回避する

アクションかどうか。

これは完全に機能しますが、遅延時間nが十分に長く(約0.3〜0.4秒)、ユーザーの視点からはそれほど長い遅延である場合に限ります。また、nの価値は、異なるプロセッサ速度とその脆弱なソリューションで異なるデバイスを変える必要があると思います。

優雅なソリューションはありますか?

答えて

0

HTMLを制御できますか?そのような場合は、グローバルクリック検出を追加することができます。 <body ontouchdown='detectTouch()'>し、ObjCアプリにカスタムメッセージを使用します(例: location.href="touch://whatever"。あなたのUIWebView(shouldStartLoadWithRequest)のリンク/位置変更メッセージを見て、渡されたスキームとデータを解析します。リンクのクリックには伝播しないでください。うまくいくはずです。

HTMLを制御できない場合は、いつでもタッチハンドラを挿入することができますが、リンククリック中にイベントの順序を把握する必要があり、 tリンク。

+0

ありがとうございました。いいえ、私はhtmlを制御できません。あなたはタッチハンドラを注入することによって何を意味するのかをさらに教えてください。 – Gruntcakes

+0

UIWebViewの任意のページに独自のJavascriptを挿入することができます - 'stringByEvaluatingJavaScriptFromString'。 'document.getElementsByTagName( 'body')[0] .addEventListener(touchdown、etc ...' –

関連する問題