如何在NSTableCellView子类中接收鼠标点击?

时间:2014-01-05 06:57:36

标签: cocoa nstableview

我已经将NSTableCellView子类化了一些自定义绘图。当包含NSOutlineView的突出显示样式设置为时,我的视图会收到mouseDown事件。
当我将NSOutlineView的突出显示样式更改为常规时,我的视图不再接收其mouseDown事件。

如何在将大纲视图的高亮样式保持为常规的同时将mouseDown事件传递给我的视图?

1 个答案:

答案 0 :(得分:9)

显然NSTableView会覆盖-hitTest:以实现行选择/拖动/等。功能 - 这可以解释为什么当突出显示样式为时没有问题。

根据Apple Docs

  

指定子视图应如何响应事件

     

[...]如果创建表视图子类,则可以覆盖validateProposedFirstResponder:forEvent:指定哪些视图可以成为第一个响应者。通过这种方式,您收到鼠标事件

或者可选..如果事件处理对您的子类至关重要:为什么不创建一个NSControl子类? 根据相同的文档,对库存表视图类中已实现的控件进行了特殊处理。