3

私がしたいこと

円形のカスタム NSView サブクラスがあり、マウスがビューの円形部分の上にあるときのカーソルの外観を変更したいのですが、ビューの四角形の円の外側にある部分の上ではカーソルの外観を変更したくありません。

これがイラストです。画像タグでインライン化したかったのですが、私はあまりにも新しいので、そのような素晴らしい機能に参加することはできません.

私がこれまでに知っていること

NSCursor を使用してカーソルの外観を変更する方法を知っています。長方形のビューでこれを達成する最良の方法は、カーソル長方形を使用することだと思います。私は、mouseMoved イベントを受け取ることができることを知っています (そして、マウスがこのビュー上にないときは、mouseEntered と mouseExited を使用してそれらをオフにする必要があります)。

では、何が問題なのですか?

私が知る限り、システムは最初の応答者ではないビューに mouseMoved イベントを送信しません。したがって、マウスがビューの上にあるときに mouseMoved イベントを取得したい場合は、現在持っている人から firstResponder ステータスを盗む必要があります。テキスト ビューにフォーカスがある場合、そのようなビューの上にマウスを移動するだけでそれが奪われてしまいます。これは、ユーザビリティの観点からは受け入れられません。

したがって、私の質問は次のようになります。これを行うためのより良い方法はありますか? ファーストレスポンダにならずに mouseMoved イベントを取得できますか?

ありがとう!

次のタグを追加します: custom-views mouse-events NSCursor firstResponder しかし、繰り返しますが、私は SA 初心者なので、できません。

4

2 に答える 2

2

YESを返すには、NSViewのacceptsFirstResponderメソッドをオーバーライドするだけでよいと思います。そうしないと、ビューはイベント情報を受け取りません。

于 2009-07-23T04:49:22.750 に答える
1

円形の領域である必要がありますか?ビューの長方形の境界内のどこでも許容できる場合は、カーソル rectを使用できます。

于 2009-07-23T17:02:44.647 に答える