启用点击的正确方法是在 NSView 上覆盖 AcceptFirstMouse 以返回 YES。(点进意味着你可以点击并使用一个控件,即使它的窗口没有聚焦。例如,Finder 工具栏按钮和交通灯窗口控件使用它。)
我的问题是我的应用程序不是基于 Cocoa,而是基于 GTK。在底层,GTK 使用了一些 Carbon 和 Cocoa,如果需要,我可以获得指向 NSView 的指针——但如果不编辑 GTK 源,我无法让小部件使用不同的 NSView 子类。还有什么其他方法可以实现点击?
(并且,如果可能的话,“悬停” - 我也想在点击控件上有鼠标悬停事件,所以我可以突出显示它们,告诉用户它们是可点击的。)
我可以用 kEventWindowGetClickActivation 调用 Carbon 的 InstallWindowEventHandler,但我不确定如何使用它,以及它是否可以工作(我已经阅读过 Carbon 已被弃用,可能不再适用于现代 Mac)。或者,必须有一个低级机制来实现这一点(必须以某种方式实现 Cocoa 机制)。有任何想法吗?