NSCollectionViewItem双击动作?

时间:2009-10-12 00:39:22

标签: objective-c cocoa nscollectionview nscollectionviewitem

如何为用户双击NSCollectionViewItem时设置操作。例如,NSTableView具有setDoubleAction方法。 NSCollectionView是否有类似内容?

由于

2 个答案:

答案 0 :(得分:2)

您可能希望在NSCollectionViewItem中处理此问题,而不是NSCollectionView本身(处理NSTableView类比)。

答案 1 :(得分:2)

我知道这个问题很古老,但它现在是谷歌的第三个结果,我发现了一种我在其他地方没有见过的不同且非常简单的方法。 (我不仅需要操纵所表示的项目,而且还需要在我的应用程序中执行更复杂的工作。)

NSCollectionView继承自NSView,因此您只需创建自定义子类并覆盖mouseDown即可。这并非完全没有缺陷 - 在使用NSCollectionView的{​​{1}}方法之前,您需要检查点击次数,并将点从主窗口转换为集合视图的坐标:

indexPathForItem

这感觉好像我终于找到了Apple打算使用的方法 - 否则,override func mouseDown(with theEvent: NSEvent) { if theEvent.clickCount == 2 { let locationInWindow = theEvent.locationInWindow let locationInView = convert(locationInWindow, from: NSApplication.shared.mainWindow?.contentView) if let doubleClickedItem = indexPathForItem(at: locationInView){ // handle double click - I've created a DoubleClickDelegate // (my collectionView's delegate, but you could use notifications as well) ... 没有理由存在。