gpt4 book ai didi

cocoa - cmd + period(.) 无法按预期工作

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

我使用 cocoa 在 Mac 上开发了一个应用程序。我需要将 cmd + period(.) 键盘事件作为我设计的命令来处理。但现在 cmd + period(.) 键盘事件没有像我预期的那样得到很好的处理。

在cocoa的keyEvent处理过程中,如果应用程序对象处理了一个按键事件,并且发现它不是一个按键等效事件或者一个按键界面控制事件,那么它就会通过sendEvent:消息将其发送到按键窗口。窗口对象调用第一响应者中的 keyDown: 方法。我的 cmd + period(.) 句柄位于 keyDown: 方法 中。

但问题是 Mac 将 cmd + 句点(.) 键视为与 Escape 键相同。键窗口首先在 View 层次结构中搜索其等效键为 Escape 或 Command-.(以输入的为准)的 View 。但这些 View 均不处理等效键,然后会将取消:操作消息发送到响应者链中的第一个响应者。因此 cmd + period(.) 在到达 keyDown: 方法之前被处理为取消操作。

任何人都可以有一些想法来解决这个问题。并使 cmd + period(.) 按我的预期处理,但作为取消命令。谢谢。

此外,在进行键等效检查(performkeyEquivalent)时最好不要处理cmd + 句点(.)。

最佳答案

如果要覆盖默认处理,则需要捕获链中较早的键盘事件。例如,子类化 NSWindow 并重写 -sendEvent,或者更彻底的是,子类化 NSApplication 并重写 -nextEventMatchingMask (所有事件都将通过此函数)。

关于cocoa - cmd + period(.) 无法按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5577355/

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