gpt4 book ai didi

swift - 在 Swift 中监听所有窗口的按键

转载 作者:行者123 更新时间:2023-12-02 17:57:40 26 4
gpt4 key购买 nike

当我的应用程序获得焦点时,如何监听 NSEvents,但与哪个窗口处于事件状态无关?

我不想监听系统范围的事件,我只想在我的应用程序获得焦点时监听单个和/或修改的击键,但我能找到的所有示例都是从 NSWindow 或 NSView 监听 NSEvents。

我的应用程序有多个窗口,我希望在任何一个窗口获得焦点时捕获所有击键。

最佳答案

这会起作用,但对于这个问题来说有点过分了。请参阅亚历山大的答案以了解正确的方法。


覆盖NSApplication.sendEvent 。这是应用程序中所有事件的中央调度方法。您可以确定您关心哪些事件,然后使用它们,或者使用 super 发送它们。这是 NSApplication 中记录的覆盖点。这不是黑客攻击。

请注意,这需要对 NSApplication 本身进行子类化。它不由应用程序委托(delegate)处理。有关 Swift 中 NSApplication 子类化的说明,请参阅 Subclass NSApplication in Swift 。 (看完所有评论,答案有点乱,关键是设置 NSPrincipalClass 。)

有关更多技术细节,请参阅Cocoa Event Handling Guide ,涵盖了整个架构。

关于swift - 在 Swift 中监听所有窗口的按键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75347264/

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