NSCollectionViewItem 双击操作?
如何设置用户双击 NSCollectionViewItem 时的操作。例如,NSTableView
具有 setDoubleAction
方法。 NSCollectionView 有类似的东西吗?
谢谢
How do I set an action for when a user double clicks an NSCollectionViewItem
. NSTableView
, for example, has the setDoubleAction
method. Is there something similar for NSCollectionView
?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我知道这个问题很古老,但它现在是谷歌上的第三个结果,我发现了一种不同且非常简单的方法,我在其他地方没有看到记录。 (我不仅需要操作所表示的项目,而且在我的应用程序中还有更复杂的工作要做。)
NSCollectionView
继承自NSView
,因此您可以简单地创建一个自定义子类并覆盖mouseDown
。这并非完全没有陷阱 - 在使用NSCollectionView
的indexPathForItem
方法之前,您需要检查点击计数,并将主窗口中的点转换为集合视图的坐标:感觉好像我终于找到了 Apple 打算使用的方法 - 否则,
indexPathForItem(at:)
没有理由存在。I know this question is ancient, but it comes up as the third result on Google right now, and I've found a different and very straightforward method that I haven't seen documented elsewhere. (I don't just need to manipulate the represented item, but have more complex work to do in my app.)
NSCollectionView
inherits fromNSView
, so you can simply create a custom subclass and overridemouseDown
. This is not completely without pitfalls - you need to check the click count, and convert the point from the main window to your collection view's coordinate, before usingNSCollectionView
'sindexPathForItem
method:This feels as if I've finally found the method Apple intended to be used - otherwise, there's no reason for
indexPathForItem(at:)
to exist.您可能希望在
NSCollectionViewItem
中处理此问题,而不是在NSCollectionView
本身中(以解决您的NSTableView
类比)。You'd probably want to handle this in your
NSCollectionViewItem
, rather than theNSCollectionView
itself (to work off yourNSTableView
analogy).