gpt4 book ai didi

cocoa - NSButton 鼠标按下事件

转载 作者:行者123 更新时间:2023-12-03 16:16:00 25 4
gpt4 key购买 nike

我试图在鼠标按下按钮时显示弹出菜单。当鼠标按下时,按钮应显示为按下状态,而当鼠标松开时,按钮应显示为“未按下”,无论选择了任何菜单项。类似于“Expose/Space Preference”面板中用于添加应用程序的“+”按钮。

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

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

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

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

有什么建议吗?我想方法2或3是正确的方法,只需“取消按下”鼠标上的按钮即可。

最佳答案

相当古老的线程。但这是我最近面临的问题,所以如果允许我做出贡献......

就我而言,使用 NSPopupButton 不是一个选择。因为 NSPopupButton 创建了它自己的 NSMenu,我不需要它(而且我不知道如何让它消失)。

我找到了另一种方法。可以在不创建子类的情况下更改默认的 NSButton 行为。只需使用 NSControl 类的 -sendActionOn: 方法(在 -awakeFromNib 中的某个位置):

[_myButton sendActionOn:NSEventMaskLeftMouseDown];

现在,按钮的操作将在 mouseDown 事件上发送。希望这会有所帮助。

关于cocoa - NSButton 鼠标按下事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3651767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com