如何为用户双击NSCollectionViewItem
时设置操作。例如,NSTableView
具有setDoubleAction
方法。 NSCollectionView
是否有类似内容?
由于
答案 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)
...
没有理由存在。