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

标签 swift macos accessibility nswindow nspanel

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

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

附言我在 OS X 开发方面不是很有经验,这是我的第一个 Swift 项目,如果这是一个微不足道的问题,请原谅。

最佳答案

您需要让您的窗口成为 NSPanel(或子类)的实例,在其 styleMask 中包含 NSNonactivatingPanelMask,并设置 becomesKeyOnlyIfNeeded 为真。 (样式掩码可以在 IB 中控制。)您可能还希望它 float 以便它始终位于普通窗口上方,因此也将 floatingPanel 设置为 true。

关于swift - 如何在仍然接收点击事件的同时使 OS X 应用程序无法聚焦?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37645172/

相关文章:

iOS:CALayer 的辅助功能标签

下次我打开应用程序时,Swift Filled plist 是空的

macos - 将 Pygame 3.5 转换为可执行文件 - Mac

ios - UIAccessibilityNotificationQuestion

swift - [Swift._NSContiguousString 字节] : unrecognized selector sent to instance

ios - 在 AVAudioEngine 中从网络流式传输数据,这可能吗?

android - 在 React Native 中滚动浏览 FlatList 不会在 Android 中提供对讲消息

自定义类型的 Swift 字典初始化给出 : '>' is not a postfix unary operator error

ios - 在应用内购买时删除 RevMob 广告横幅

ios - 自动调整大小的 tableView 高度错误