我有一个NSSplitView显示两个NSTableView实例。我需要检测哪个表视图已经"激活"了。(聚焦的),也就是用户点击过的那个。我需要知道这一点,因为每个表视图都充当显示所选行内容的另一个视图的源列表。另一个视图为两个表共享。
我可以通过子类化NSTableView并对mouseDown:
或其他方法做出反应来做到这一点,但我宁愿避免为此子类化。我也不想跟踪任何NSWindow事件只是为了知道用户是否点击了其中一个表(我宁愿子类NSTableView)。
目前,我使用委托方法tableViewSelectionDidChange:
,但很明显,这个方法只在选定行更改时调用。我需要知道,即使所选的行没有改变,表也会成为活动的。
观察表视图的clickedRow
属性似乎不起作用。它可能不符合KVO。
任何想法?
对于那些感兴趣的人,我发现最方便的解决方案是利用NSTableView
是NSControl
的子类这一事实。就像NSButton它能在点击时发送动作消息。对于每个tableView,我都连接了它的动作到接口构建器中控制器对象的相同ibaction选择器。控制器识别发送者并采取相应的行动。不需要子类化NSTableView