【问题标题】:How to catching doubleClick events from NSOutlineView in ViewController?如何从 ViewController 中的 NSOutlineView 捕获 doubleClick 事件?
【发布时间】:2017-02-02 16:17:43
【问题描述】:

我试图从我的 NSOutlineView 中捕获 doubleClick 事件以传递给我的 ViewController。我的想法是捕捉 doubleClick 事件并从我的 OutlineView 中获取选定的行 到目前为止,我所做的是将 NSOutlineView 子类化以覆盖 mouseDown

override func mouseDown(with event: NSEvent) {
   super.mouseDown(with: event)
   if event.clickCount >= 2 {
      ... 
   }
}

效果很好,但是我不知道如何将此事件传递给我的 ViewController。 ViewController 已经实现了 NSOutlineViewDelegate 协议。

我想解决方案并不遥远,但不知何故我被卡住了。

【问题讨论】:

  • 我想补充一点,如果只发生一次点击,我也想选择一行。然后应该选择该行。在 doubleClick 上应该触发另一个事件。
  • 除了选择行之外的另一个事件?

标签: swift macos nsoutlineview


【解决方案1】:

更新 虽然您可以在 OSX 中为单击设置 NSGestureRecognizer,为双击设置 NSClickGestureRecognizer,但您可能应该直接使用 NSOutlineViewdoubleAction 属性。

这是一个如何设置的示例

这来自另一个Wenderlich tutorials,在SO already上有很好的讨论

【讨论】:

  • 你可以在 Cocoa 中使用点击手势吗?我不知道。
  • 抱歉 - 我错过了我们在谈论 OSX,但您可以使用 NSGestureRecognizer 而不是 UIGestureRecognizer。看看developer.apple.com/reference/appkit/nsgesturerecognizer
  • @Russel,感谢您的回答。我离开了我的 Mac,但如果我正确理解了你,我需要 * 实例化一个 NSClickGestureRecognizer(target: myViewController, action: handleGesture) * 将gestureRecognizer 添加到我的 NSOutlineView * 在 myViewController 中实现一个 handleGesture 方法
  • @Russell:啊! Ray Wenderlich 教程始终是我首先要看的地方。一定错过了这个。感谢您提及:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-05
  • 2010-11-07
  • 2017-10-01
  • 2018-02-20
  • 1970-01-01
  • 2013-10-13
  • 2019-09-14
相关资源
最近更新 更多