检测哪个 NSTableView 处于活动状态

Detect which NSTableView is active

我有一个 NSSplitView 显示两个 NSTableView 实例。我需要检测哪个 table 视图已变为“活动”(聚焦),这意味着用户已单击该视图。我需要知道这一点,因为每个 table 视图充当显示所选行内容的另一个视图的源列表。 table 两人共享另一个视图。

我可以通过对 NSTableView 进行子类化并对 mouseDown: 或其他方法做出反应来做到这一点,但我宁愿避免为此进行子类化。我也不想跟踪任何 NSWindow 事件只是为了知道用户是否单击了 tables 之一(我宁愿继承 NSTableView)。

目前,我使用委托方法tableViewSelectionDidChange:,但很明显,这个方法只在所选行发生变化时调用。我需要知道即使所选行没有更改,table 也会变为活动状态。

观察 table 视图的 clickedRow 属性 似乎不起作用。如果可能不符合 KVO。

有什么想法吗?

对于那些感兴趣的人,我发现最方便的解决方案是利用 NSTableViewNSControl 的子类这一事实。因此,就像 NSButton 一样,它可以在单击时(鼠标松开时)发送操作消息。 对于每个 tableView,我将其“操作”连接到界面生成器中我的控制器对象的相同 ibaction 选择器。 控制器识别发送者并相应地采取行动。 无需继承 NSTableView。