NSButton没有称其为行动

时间:2018-03-25 21:54:39

标签: swift macos cocoa appkit nsbutton

我对NSButton的行动有点麻烦。我以编程方式创建一个按钮......

let continueButton = NSButton(title: "Continue", target: self, action: #selector(self.continueButtonClicked))

...调用此函数:

@objc func continueButtonClicked() {
    print("continueButtonClicked")
}

但是,永远不会调用continueButtonClicked,并且该按钮似乎已被禁用。我已经尝试过启用它,但这并不能解决问题。

我错过了什么吗?

2 个答案:

答案 0 :(得分:2)

我认为您需要在方法中包含发件人信息。以下代码应该可以使用并与Swift 4兼容。

let continueButton = NSButton(title: "Continue", target: self, action: #selector(self.continueButtonClicked(_:)))

@objc func continueButtonClicked(_ sender: NSButton) {
    print("Continue button clicked")
}

答案 1 :(得分:2)

好的,事实证明,按钮确实调用了动作,但它只是在按下它几秒后才做出反应。我设法弄清楚原因是我在按钮的超级视图上有一个NSClickGestureReckognizer。在显示按钮时禁用它可以解决我的问题。

我希望这有助于遇到类似问题的人。