NSButton Mousedown活动

Dan*_*Dan 3 cocoa nsevent appkit

我正试图在按钮上显示鼠标按下弹出菜单.鼠标按下时按钮应显示为按下,无论选择了任何菜单项,鼠标按下都会"按下".类似于Expose/Space Preference面板"+"按钮,用于添加应用程序.

到目前为止我尝试了3种方法:

  1. 单击按钮时发送操作.但是这里弹出菜单出现在鼠标上而不是鼠标按下

  2. 子类NSButton并覆盖mouseDown:.鼠标按下时出现弹出菜单,我可以选择任何菜单项.但是当弹出菜单消失时,按钮出现了按下状态.因此,我需要再次单击以"取消"按钮,然后才能再次执行相同的操作.

  3. NSEvent addLocalMonitorForEventsMatchingMask.类似的行为2.

有什么建议吗?我猜方法2或3是正确的方法,只需要在鼠标上"按下"按钮.

UJe*_*Jey 12

相当旧的线程.但这是我最近遇到的问题,所以如果我被允许捐款......

在我的情况下,使用NSPopupButton不是一个选项.因为NSPopupButton创建它自己的NSMenu我不需要(我不知道如何使它消失).

我发现了另一种方式.有可能在没有子类化的情况下更改默认的NSButton行为.只需使用-sendActionOn:NSControl类的方法(在某处-awakeFromNib):

[_myButton sendActionOn:NSEventMaskLeftMouseDown];
Run Code Online (Sandbox Code Playgroud)

现在,按钮的操作将在mouseDown事件上发送.希望这可以帮助.