1

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

ただし、マウス ボタンを離すことによって、ユーザーの選択がいつ「確認」されたかを判断する際に、より適切な言葉がないため、問題が発生しています。WebEditingDelegate非公式プロトコルはメソッドを定義しますが-webViewDidChangeSelection:、選択が変更されるたびに呼び出されます。したがって、たとえば、ユーザーが行全体をドラッグすると、-webViewDidChangeSelection:が何度も呼び出されます。選択範囲が変更されるたびに 1 回呼び出されます。明らかに、これは機能しません。ドラッグの過程でウィンドウを数回ポップアップするからです。

必要なことを達成する方法を知っている人はいますか?

4

2 に答える 2

2

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

ほとんど知られていない提案は、方程式のマウス部分に妥当に聞こえますが、選択がマウスから変更されている場合、マウスが上にあるときに最終的な「選択が変更された」ことは決してないのではないかと心配しています。

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

タイマーの有効期限が切れたときに、マウスがまだ押されているかどうかなどの基準を調べることで、これを微調整できます。マウスが押されている場合は、タイマーを少し延期して、さらに 0.5 秒後にマウスが離されたかどうかを確認します。

于 2009-06-04T15:21:01.253 に答える
2

同じ方法を使用することもできますが、マウスが押されているかどうかをテストするだけです。

于 2009-06-04T11:02:04.927 に答える