如何在仍然接收点击事件的同时使OS X应用程序无法对焦?

时间:2016-06-05 18:09:20

标签: swift macos accessibility nswindow nspanel

我正在为OS X开发屏幕键盘应用程序,类似于操作系统内置的键盘应用程序(键盘查看器)。我似乎碰到了一堵墙,因为我不确定如何从按钮接受点击事件而不是从当前激活的应用程序中窃取焦点。我知道这是可能的,因为有些应用程序已经这样做,例如AssistiveWere的KeyStrokes。

所以我的问题是:如何让我的窗口接收鼠标事件并处理它们而不被激活?

P.S。我在OS X开发方面不是很有经验,这是我的第一个Swift项目,如果这是一个微不足道的问题,请找借口。

1 个答案:

答案 0 :(得分:4)

您需要使您的窗口成为NSPanel(或子类)的实例,在NSNonactivatingPanelMask中包含styleMask,并将becomesKeyOnlyIfNeeded设置为true。 (样式掩码可以在IB中控制。)您可能还希望它是浮动的,因此它始终高于正常窗口,因此也将floatingPanel设置为true。