objective-c - 缺少有意义的组合键上的 keyUp 事件(例如 "Select till beginning of line")

标签 objective-c cocoa macos

我有一个 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/

相关文章:

objective-c - 加载 webview 时显示 NSWindow

objective-c - UITextView 中的项目符号列表和编号列表

ios - XCode5 中 UITableviewCell 的弹出 View

macos - 如何在Cocoa Desktop上以这种方式显示 View ?

objective-c - NSAppleEventDescriptor 到 NSArray

c++ - boost::filesystem 的段错误

css - 悬停效果后 Mac 上的 Safari 不更新/重绘

objective-c - 最好在禁用交互的情况下检测 UIScrollView 内 UIView 上的触摸

cocoa - 键值观察和 NSButton 状态

macos - 我必须指定哪些权利才能在 NSTask() 中使用默认写入 com.apple.screencapture