feb*_*ing 4 macos cocoa objective-c
我有一个NSTextField,它用作扩展的NSTextFieldCell,它创建一个自定义字段编辑器,拦截并记录关键事件.(了解关键事件对于应用程序很重要,但是文本字段仍然应该像往常一样工作,通过调用[super ...]
方法).这是官方文档对此问题的建议.
我确实keyUp
在打字时收到大多数活动,但在某些情况下我没有收到.当按下一个附有动作的组合键时,似乎会发生这种情况.例如Cmd-Shift-Left
,不发出keyUp事件.该输入使得从点到开头的整行显示为选中,但是已经keyDown
接收到.
在那些缺失的情况下,当-performKeyEquivalent:
通过覆盖它来看时,我看到它被称为.为什么keyUp没有交付?
Nat*_*teS 10
对于其他人来说,这是"修复"它的代码:
- (void)sendEvent:(NSEvent *)event {
if ([event type] == NSKeyUp && ([event modifierFlags] & NSCommandKeyMask))
[[self keyWindow] sendEvent:event];
else
[super sendEvent:event];
}
Run Code Online (Sandbox Code Playgroud)