如何在 view-based NSTableView 中获得点击通知

How to get notified of clicks in a view-based NSTableView

我有一个 view-based 包含单词列表的 NSTableView。当用户 double-clicks 上一个词时,我想采取一个动作。这些词不是 editable 或 selectable。我该怎么做?

我尝试在 IB 中设置 table 视图的目标和操作,但它仅在用户单击 table 的 header 时调用操作方法,不在其中一个词中。

我尝试设置 table 单元格视图保存在 IB 中的 NSTextField 的目标和操作。这导致在控制台中重复此错误消息:

2018-01-02 14:14:32.080347-0800 WordExplorer[7089:21457459] Could not connect action, target class NSObject does not respond to -relatedWordClick:

但是目标 class 确实 响应选择器。 (我是直接在IB里连接的,很明显,确实如此!)也不是简单的NSObject,估计是哪里出了问题

我已经尝试在我的代表的 -tableView:viewForTableColumn:row: 方法中的 table 单元格视图中包含的 NSTextField 上手动调用 -setTarget:-setAction:。这没有任何效果,并且调试器显示尽管调用了这些方法,但它们没有设置文本字段的操作或目标方法。 (不过,考虑到我们正在谈论的是 Xcode,这很可能只是调试器显示问题。)我在控制台中没有收到任何错误,就像我在 IB 中建立连接时一样,但它也不会调用适当的方法。

我是否需要制作自定义视图 class 并将其用于 table 单元格视图?或者有没有更简单的方法来获得我列表中单词的点击次数(最好是 double-clicks)?

只需在您拥有的对象上创建一个 IBAction 作为 NSTableViewtarget,然后设置 NSTableViewdoubleAction 属性 到 IBAction 的选择器,您可以轻松处理双击事件。