【问题标题】:Capture option / command key inside NSTextField在 NSTextField 中捕获选项/命令键
【发布时间】:2017-04-02 07:52:51
【问题描述】:

我在NSViewController 中使用了NSTextField。我想捕捉特殊的键盘快捷键,比如 ⌥+0 来做一些特别的事情。但是,这些关键事件不会传递到:

- (BOOL) control:(NSControl *)control textView:(NSTextView *)textView doCommandBySelector:(SEL)commandSelector

我知道我们不能为自定义 NSTextField 覆盖 keyDown 事件,因为无论如何都会使用特殊字段编辑器代替我们的字段。我如何处理这些特殊的快捷方式而不求助于在主菜单中添加隐藏的NSMenuItems?

【问题讨论】:

    标签: macos cocoa keydown nstextfield


    【解决方案1】:

    看起来很简单的事情,显然不在 Mac 上。使用自定义 NSFormatter 不起作用,因为我想捕获每个击键(包括修饰键)。手头的两个选项是在NSWindow 级别拦截sendEvent 并将其冒泡到托管焦点控件的视图控制器,或者使用自定义字段编辑器。我最终为NSTextField 返回了一个自定义字段编辑器(通过子类化NSTextField / NSTextFieldCell 并为字段编辑器返回一个子类NSTextView 对象)。通过这种方式,我能够干净利落地使用委托,拦截击键并将它们传递给视图控制器进行处理。否则不会被使用的击键将由字段编辑器正常处理。

    【讨论】:

      猜你喜欢
      • 2011-07-02
      • 1970-01-01
      • 2014-07-25
      • 2022-01-12
      • 1970-01-01
      • 1970-01-01
      • 2011-11-21
      • 2023-04-05
      相关资源
      最近更新 更多