2009-06-04 6 views
1

WebViewでテキストを選択できる機能を実装しようとしていますが、マウスボタンを放した後にをクリックすると、小さなウィンドウがポップアップしてユーザーが操作を実行できるようになります選択したテキストにWebViewの選択変更の通知

しかし、私はマウスのボタンを離すことで、ユーザーの選択が「確認済み」であること、より良い単語が不足していることを判断することに苦労しています。 WebEditingDelegate非公式プロトコルは-webViewDidChangeSelection:メソッドを定義しますが、選択がまったく変更されるたびに呼び出されます。したがって、たとえば、ユーザーが行全体をドラッグすると、-webViewDidChangeSelection:が何度も呼び出されます。選択された範囲が変更されるたびに1回です。明らかに、これはうまくいきません。なぜなら、ドラッグの過程で何度かウィンドウをポップアップさせるからです。

誰かが私が必要とするものを達成する方法を知っていますか?

答えて

2

私は最終イベントとしての「マウスアップ」に焦点を絞るのは狭すぎるかもしれないと思います。たとえば、ユーザーがShiftキーを押しながらテキストを選択して選択するとどうなりますか?あなたのソフトウェアはこの場合同じ効果を持つべきではありませんか?

マウスの方程式の妥当性を示唆している音はありませんが、マウスから選択が変更されると、マウスが上がったときに最終的な「選択が変更されました」ことはありません。

したがって、おそらく純粋なNSTimer遅延でこの問題に近づくでしょう。あなたがNSTimerをリセットすると、Webビューから「選択が変更されました」が表示されます。 0.5秒のような短い経過時間に達すると、ウィンドウを置いたり移動したりします。

マウスがまだダウンしているかどうかなど、タイマーの満了時に検査することで、これを微調整できます。マウスがダウンしている場合は、少し時間を延期して、もう半分ほど後にマウスが持ち上げられたかどうかを確認してください。

+0

ええ、確かに、マウスだけに焦点を当てることは少し狭いです。 WebViewは編集可能ではないため、ユーザーがキーボードで変更する挿入ポイントがないため(キーボードの選択を変更することで問題が発生するとは思わない)(ユーザーが行っているデータの種類見ているのは編集可能なテキストエリアやそのようなものからではありません)。しかし、マウスに焦点を当てると、後でアクセシビリティデバイスで問題が発生するかもしれないと思います。 –

+0

テキストをキーボードで選択できるように編集する必要はありません。単語をダブルクリックして選択し、次に矢印を移動して参照してください。 また、cmd-Aを押すとすべてが選択されます。これらは一般的なユースケースではないかもしれませんが、あなたの製品を磨くことですべてを同じようにカバーできます。 – danielpunkass

+0

うわー、WebViewの選択範囲を拡張することは、(10.0よりOS Xを使用した後に新しい何かを学んだ)ようにすることはできませんでした。 OS Xの他のすべての選択可能なテキストと一貫しているので、わからない理由は分かりません。問題のテキストの性質上、すべてを選択することは意味をなさないため、cmd-Aのケースは実際問題ではありませんでした。しかし、あなたが正しいです、私は間違いなく選択範囲の拡張を処理する必要があります。ありがとう! –

2

同じ方法を使用できますが、マウスが停止しているかどうかをテストします。マウスが停止していない場合は何もしないでください。