当用户双击一个NSCollectionViewItem
. NSTableView
,例如,有setDoubleAction
方法。有类似的东西NSCollectionView
吗?
谢谢
当用户双击一个NSCollectionViewItem
. NSTableView
,例如,有setDoubleAction
方法。有类似的东西NSCollectionView
吗?
谢谢
我知道这个问题很古老,但它现在是谷歌上的第三个结果,我发现了一种不同且非常简单的方法,我在其他地方没有看到过记录。(我不仅需要操作表示的项目,还需要在我的应用程序中完成更复杂的工作。)
NSCollectionView
继承自NSView
,因此您可以简单地创建自定义子类并覆盖mouseDown
. 这并非完全没有陷阱——在使用NSCollectionView
'sindexPathForItem
方法之前,您需要检查点击次数,并将主窗口中的点转换为集合视图的坐标:
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)
...
这感觉好像我终于找到了 Apple 打算使用的方法——否则,就没有存在的理由indexPathForItem(at:)
。
您可能希望在您的NSCollectionViewItem
,而不是NSCollectionView
本身中处理此问题(以消除您的NSTableView
类比)。