3

我有一个带有 TextView 的基于文档的 Cocoa 应用程序,我想捕获对它的点击,所以我试图拦截诸如 mouseDown、mouseUp 等窗口事件,然后将它们与我的 TextView 相关联。

我尝试了两件事:

1.) 我将 TextView 设置为文档窗口的初始第一响应者,并覆盖了文档类上的 mouseDown 事件,但它没有触发。

2.) 我将 NSWindow 子类化并覆盖 mouseDown,然后在我的文档 xib 中将该子类设置为我的 Window 类。那个事件也没有发生。

我注意到窗口的委托已经设置为我的文件所有者,这是我的 NSDocument 子类。如果我的文档子类是我的窗口的委托,为什么事件不会在我的 NSDocument 上触发?

4

1 回答 1

2

目前尚不清楚为什么您希望 NSDocument 处理 -mouseDown: 窗口中视图的事件。NSDocument 不响应 -mouseDown:。NSTextView(顾名思义)是 NSView 的子类,它是 NSResponder 的子类,它确实响应 -mouseDown:。

您应该好好阅读Cocoa 事件处理指南。

也不清楚您为什么要处理这些事件并将它们传递给您自己的视图。Cocoa 会为您处理所有这些事情,并且可能会做得更好。您应该明确您的总体目标(如“为什么要拦截点击并将其转发给您自己的视图?”)- 可能有更好(并且可能更容易)的方法来实现它。

于 2010-11-02T13:39:55.647 回答