Cocoa cmd+;期间(.)未按预期工作

Cocoa cmd+;期间(.)未按预期工作,cocoa,macos,keyboard,shortcut,Cocoa,Macos,Keyboard,Shortcut,我使用cocoa在Mac上开发了一个应用程序。我需要将cmd+period(.)键盘事件作为我设计的命令来处理。但是现在cmd+period(.)键盘事件并没有像我预期的那样得到很好的处理 在cocoa keyEvent句柄过程中,如果应用程序对象处理一个密钥事件,但结果证明它不是密钥等价物或密钥接口控制事件,那么它会在sendEvent:消息中将其发送到密钥窗口。window对象调用第一个响应程序中的keyDown:方法。我的cmd+句点(.)句柄位于键下:方法中 但问题是Mac对cmd+句点

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

在cocoa keyEvent句柄过程中,如果应用程序对象处理一个密钥事件,但结果证明它不是密钥等价物或密钥接口控制事件,那么它会在sendEvent:消息中将其发送到密钥窗口。window对象调用第一个响应程序中的keyDown:方法。我的cmd+句点(.)句柄位于键下:方法中

但问题是Mac对cmd+句点(.)键的处理方式与Escape键相同。“关键点”窗口首先在视图层次结构中搜索其关键点等效项为Escape或Command-的视图,以输入的为准。但是这些视图都不会处理等价的键,然后会向响应者链中的第一个响应者发送一条cancel:action消息。 所以cmd+句点(.)在到达keyDown:method之前被作为取消操作处理。

谁能想出一些办法来解决这个问题。并使cmd+句点(.)按我预期的方式处理,但按cancel命令处理。多谢各位


更重要的是,在执行键等效检查(performkeyEquivalent)时,最好不要处理cmd+句点(.)。

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

如果要覆盖默认处理,则需要在链中更早地捕获键盘事件。例如,子类NSWindow和override-sendEvent,或者更彻底的子类NSApplication和override-NextEventMachingMask(所有事件都将通过此函数传递)。

为了应用程序之间的一致性,您可能不应该使用Command+period(.)-用户希望它表示“停止”或“取消”.为了保持应用程序之间的一致性,您可能不应该使用Command+period(.)-用户希望它的意思是“停止”或“取消”。