我已经将NSTableCellView
子类化了一些自定义绘图。当包含NSOutlineView
的突出显示样式设置为无时,我的视图会收到mouseDown事件。
当我将NSOutlineView
的突出显示样式更改为常规时,我的视图不再接收其mouseDown事件。
如何在将大纲视图的高亮样式保持为常规的同时将mouseDown事件传递给我的视图?
答案 0 :(得分:9)
显然NSTableView
会覆盖-hitTest:
以实现行选择/拖动/等。功能 - 这可以解释为什么当突出显示样式为无时没有问题。
根据Apple Docs:
指定子视图应如何响应事件
[...]如果创建表视图子类,则可以覆盖validateProposedFirstResponder:forEvent:指定哪些视图可以成为第一个响应者。通过这种方式,您收到鼠标事件。
或者可选..如果事件处理对您的子类至关重要:为什么不创建一个NSControl
子类?
根据相同的文档,对库存表视图类中已实现的控件进行了特殊处理。