我有一个 NSTextField,它用作扩展的 NSTextFieldCell,它创建一个自定义字段编辑器,用于拦截和记录关键事件。 (了解关键事件对应用程序很重要,但文本字段仍应通过调用 [super ...]
方法照常工作)。这是官方文档针对此问题的建议。
我在打字时确实收到了大多数 keyUp
事件,但在某些情况下我没有收到。当按下一个附加了 Action 的组合键时,它似乎会发生。例如。 Cmd-Shift-Left
未发出 keyUp 事件。该输入使从点到开头的整行显示为选中状态,但在收到 keyDown
时就已经选中了。
在它丢失的情况下,当通过覆盖它查看 -performKeyEquivalent:
时,我看到它被调用了。为什么keyUp没有送达?
最佳答案
对于其他人,这是“修复”它的代码:
- (void)sendEvent:(NSEvent *)event {
if ([event type] == NSKeyUp && ([event modifierFlags] & NSCommandKeyMask))
[[self keyWindow] sendEvent:event];
else
[super sendEvent:event];
}
关于objective-c - 缺少有意义的组合键上的 keyUp 事件(例如 "Select till beginning of line"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4001565/