3

TextView を備えたドキュメントベースの Cocoa アプリケーションがあり、そのクリックをキャプチャしたいので、mouseDown、mouseUp などの Window イベントをインターセプトして、それらを TextView に関連付けようとしています。

私は2つのことを試しました:

1.) TextView をドキュメントの Window の最初の最初の応答者にし、ドキュメント クラスの mouseDown イベントをオーバーライドしましたが、ヒットしません。

2.) NSWindow をサブクラス化し、mouseDown をオーバーライドし、そのサブクラスをドキュメント xib の Window のクラスに設定しました。そのイベントもヒットしませんでした。

ウィンドウのデリゲートが、NSDocument サブクラスであるファイルの所有者に既に設定されていることに気付きました。ドキュメント サブクラスが Window のデリゲートである場合、NSDocument でイベントが発生しないのはなぜですか?

4

1 に答える 1

2

NSDocument が -mouseDown: ウィンドウ内のビューのイベントを処理することを期待する理由は明確ではありません。NSDocument は -mouseDown: に応答しません。NSTextView (その名前が示すように) は、 -mouseDown : に応答するNSResponder のサブクラスである NSView のサブクラスです。

Cocoa Event-Handling Guideをよく読んでください。

また、イベントを処理して自分でビューに渡したい理由も明確ではありません。Cocoa はこれらすべてを処理してくれるので、おそらくはるかに優れた仕事をしてくれるでしょう。全体的な目標を明確にする必要があります (「なぜクリックをインターセプトして自分でビューに転送したいのか?」のように) - それを達成するためのはるかに優れた (そしておそらくより簡単な) 方法があるかもしれません。

于 2010-11-02T13:39:55.647 に答える