如何创建自定义视图及其上方';是否可以在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解决了。谢谢你的帮助!。现在,我只是想知道为什么它不起作用!如果不能解决,就没有问题。