我正试图在按钮上显示鼠标按下弹出菜单。鼠标按下时按下按钮应该按下,无论选择了任何菜单项,鼠标按下都会“按下”。类似于Expose / Space Preference面板“+”按钮,用于添加应用程序。
到目前为止我尝试了3种方法:
有什么建议吗?我猜方法2或3是正确的方法,只需要在鼠标上“按下”按钮。
正如Peter所说,你可以使用NSPopUpButton。不显而易见的是,您可以像使用NSButton一样配置按钮的样式,图像,标题等。
相当旧的线程。但这是我最近遇到的问题,所以如果我被允许捐款......
在我的情况下,使用NSPopupButton不是一个选项。因为NSPopupButton创建了我自己不需要的NSMenu(我不知道如何让它消失)。
我发现了另一种方式。有可能在没有子类化的情况下更改默认的NSButton行为。只需使用NSControl类的-sendActionOn:
方法(在-awakeFromNib
中的某个地方):
[_myButton sendActionOn:NSEventMaskLeftMouseDown];
现在,按钮的操作将在mouseDown事件上发送。希望这可以帮助。
斯威夫特“语法”
myButton.sendAction(on: .leftMouseDown)
或者:
子类NSButton:
class ButtonDown: NSButton {
override func awakeFromNib() {
super.awakeFromNib()
self.sendAction(on: .leftMouseDown)
}
}