我有一个基于文档的Cocoa应用程序和TextView,我想捕获它的点击,所以我试图拦截像mouseDown,mouseUp等Window事件,然后将它们与我的TextView相关联。
我尝试了两件事:
1。)我将TextView作为我的文档窗口的初始第一响应者,并覆盖了我的文档类上的mouseDown事件,但它没有击中。
2.)我将NSWindow子类化并覆盖mouseDown,并将该子类设置为我的文档xib中的Window类。那个事件也没有发生。
我注意到Window的委托已经设置为我的文件所有者,这是我的NSDocument子类。如果我的文档子类是我的窗口的委托,为什么不在我的NSDocument上触发事件?
答案 0 :(得分:2)
目前尚不清楚为什么你会期望NSDocument处理-mouseDown:窗口中视图的事件。 NSDocument不响应-mouseDown:。 NSTextView(顾名思义)是NSView的子类,它是NSResponder的子类, 响应-mouseDown:。
你应该给Cocoa Event-Handling Guide一个好的阅读。
还不清楚为什么要处理事件并将其传递给自己的视图。 Cocoa会为你照顾所有这些东西,并且可能会做得更好。您应该明确自己的总体目标(如“您为什么要拦截点击并将其转发给自己的观点?”) - 可能会有更好(也可能更容易)的方式来完成它。