如何创建自定义视图及其上方';是否可以在macOS swift中单击NSS按钮?

如何创建自定义视图及其上方';是否可以在macOS swift中单击NSS按钮?,swift,macos,nsview,nsviewcontroller,Swift,Macos,Nsview,Nsviewcontroller,我在NSView中找到了NSButton。NSView具有nsClickgestureRecognitor。现在,我可以从NSView中获取action,该视图具有nsclickgesturecognizer。但问题是,NSButton无法单击 我怎样才能解决这个问题 代码: import Cocoa class ViewController: NSViewController { @IBAction func actionGesture(_ sender: NSClickGestu

我在
NSView
中找到了
NSButton
NSView
具有
nsClickgestureRecognitor
。现在,我可以从
NSView
中获取
action
,该视图具有
nsclickgesturecognizer
。但问题是,
NSButton
无法单击

我怎样才能解决这个问题

代码:

import Cocoa

class ViewController: NSViewController {

    @IBAction func actionGesture(_ sender: NSClickGestureRecognizer) {

        print("Gesture Clicked!")
    }

    @IBAction func actionButton(_ sender: NSButton) {
             print("Button Clicked!")
    }

}
屏幕截图:

import Cocoa

class ViewController: NSViewController {

    @IBAction func actionGesture(_ sender: NSClickGestureRecognizer) {

        print("Gesture Clicked!")
    }

    @IBAction func actionButton(_ sender: NSButton) {
             print("Button Clicked!")
    }

}

项目链接:
解决此问题的最简单方法是按如下所示排列视图结构。因此,连接到NSClickGestureRecognitor的视图位于按钮后面


希望这有帮助

谢谢!但是,
NSButton
必须是
自定义视图的
子视图
。因为,
NSButton
操作在延迟单击时触发。但是,我需要它,就像正常的按钮和手势动作一样。因为按钮约束取决于自定义视图。如果是这样,您可以通过经典方式实现mouseDown/mouseUp,使NSView在没有手势识别器的情况下可单击。我已更新了手势视图上的项目链接工作按钮。但是,它只能在parentView上使用一个视图。我试着找出答案,但是找不到。如果能够检查,请按照我的描述做一些不同的事情。您实现了hitTest来检查它是否是NSButton类,以忽略该手势。我的想法是将NSView子类化,以实现func mouseUp(带有event:NSEvent)或unc mouseDown(带有event:NSEvent),而不使用NSClickGestureRecognizer。是的,我最初是按照你说的做的。正如你所说,我的问题已经用Nstrack解决了。谢谢你的帮助!。现在,我只是想知道为什么它不起作用!如果不能解决,就没有问题。