如何正确处理NSTextField中的<Return> +修饰键?

我希望能够在用户编辑a时处理三种不同的组合键NSTextField

  • ⌘↩
  • ⇧↩

这些组合中的每一个都会有不同的响应。

理想情况下,我想仅通过IB来实现这一目标。但是,我的理解是,可可粉每个控件只允许发送一个动作。

我可以将此发送的动作绑定到,IBAction并将设置NSTextField为仅在按下返回键时才发送,但是我无法找到一种方法来获取当前按下的修饰键(因为该动作仅接收(id)sender,而不是事件对象)。那可能吗?

另外,我想可以继承NSTextField,覆盖keyDown:和手动运行适当的操作。但是,我想不起来如何在IB中正确连接。(我可以将aIBOutlet用作目标,但我想不出一种连接特定方法的方法。)我也担心这种方法的效率。

在上处理某些关键事件的正常方法是NSTextField什么?


我目前倾向于的方法是编写一个自定义协议,并在文本字段子类上放置一个出口:

@property (weak, nonatomic) IBOutlet id<TextFieldReturnHandler> target

然后可以从按键事件中调用它。不过,这似乎确实令人费解。

您可以将发送的动作连接到控制器上的方法:

- (IBAction)cellDidEndEditing:(id)sender;

如果只希望在按下返回键时才调用此方法,而不是例如在用户单击时才调用此方法,则可以将IB中NSTextField上的Action属性设置为“发送时仅输入”,而不是“发送时”结束编辑”。

在此方法中,您可以使用以下方法访问事件:

NSEvent *evt = [NSApp currentEvent];

在检查事件是否有效之后,您可以获取必要的修饰符标志并对其进行操作:

if (evt && evt.type == NSKeyDown) {
    evt.modifierFlags // NSShiftKeyMask, NSCommandKeyMas, NSAlternateKeyMask

    // Perform actions
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在WPF ContextMenu中捕获修饰键

来自分类Dev

在WPF ContextMenu中捕获修饰键

来自分类Dev

如何正确处理MySql中的长键约束(大于3072)?

来自分类Dev

在Riak Java客户端中,如何正确处理未找到键/值对象的情况

来自分类Dev

如何在X上用字符键交换修饰键?

来自分类Dev

如何在X上用字符键交换修饰键?

来自分类Dev

如何知道X11中的哪个修饰键?

来自分类Dev

Logitech MX密钥发送不正确的修饰键

来自分类Dev

检查是否在tkinter中按下了修饰键

来自分类Dev

检查是否在tkinter中按下了修饰键

来自分类Dev

在 vim 中重新映射修饰符键

来自分类Dev

如何处理 Cocoa 菜单栏应用程序中的修饰键

来自分类Dev

如何将未充分利用的键盘键更改为修饰键

来自分类Dev

如何在张量流RNN中正确处理一键编码和多维数据

来自分类Dev

如何在Windows 8中将按键组合映射到字符或修饰键?

来自分类Dev

Angularjs量角器测试:protractor.Key.DELETE ......这是正确的修饰键吗?

来自分类Dev

unique.data.table无法正确处理键

来自分类Dev

如何(有条件地)使用<escape>作为修饰键

来自分类Dev

如何为X11的Alt键分配另一个修饰符?

来自分类Dev

启动Cocoa应用程序时如何确定按下的修饰键?

来自分类Dev

如何为X11的Alt键分配另一个修饰符?

来自分类Dev

如何(有条件地)使用<escape>作为修饰键

来自分类Dev

如何在Windows 10上使用修饰符重新映射键

来自分类Dev

如何在没有修饰符的情况下为JRadioButton设置快捷键

来自分类Dev

在不知道Swing中的修饰键的情况下侦听斜线键击

来自分类Dev

在OSx中模拟/发送修饰键(Cntrl,Alt,fn,Shift)

来自分类Dev

在除动作事件以外的其他事件中按下了哪些键(修饰符)?

来自分类Dev

在不知道Swing中的修饰键的情况下侦听斜线键击

来自分类Dev

在窗口最小化时跟踪KeyPresses和修饰键,并登录到文件中

Related 相关文章

  1. 1

    在WPF ContextMenu中捕获修饰键

  2. 2

    在WPF ContextMenu中捕获修饰键

  3. 3

    如何正确处理MySql中的长键约束(大于3072)?

  4. 4

    在Riak Java客户端中,如何正确处理未找到键/值对象的情况

  5. 5

    如何在X上用字符键交换修饰键?

  6. 6

    如何在X上用字符键交换修饰键?

  7. 7

    如何知道X11中的哪个修饰键?

  8. 8

    Logitech MX密钥发送不正确的修饰键

  9. 9

    检查是否在tkinter中按下了修饰键

  10. 10

    检查是否在tkinter中按下了修饰键

  11. 11

    在 vim 中重新映射修饰符键

  12. 12

    如何处理 Cocoa 菜单栏应用程序中的修饰键

  13. 13

    如何将未充分利用的键盘键更改为修饰键

  14. 14

    如何在张量流RNN中正确处理一键编码和多维数据

  15. 15

    如何在Windows 8中将按键组合映射到字符或修饰键?

  16. 16

    Angularjs量角器测试:protractor.Key.DELETE ......这是正确的修饰键吗?

  17. 17

    unique.data.table无法正确处理键

  18. 18

    如何(有条件地)使用<escape>作为修饰键

  19. 19

    如何为X11的Alt键分配另一个修饰符?

  20. 20

    启动Cocoa应用程序时如何确定按下的修饰键?

  21. 21

    如何为X11的Alt键分配另一个修饰符?

  22. 22

    如何(有条件地)使用<escape>作为修饰键

  23. 23

    如何在Windows 10上使用修饰符重新映射键

  24. 24

    如何在没有修饰符的情况下为JRadioButton设置快捷键

  25. 25

    在不知道Swing中的修饰键的情况下侦听斜线键击

  26. 26

    在OSx中模拟/发送修饰键(Cntrl,Alt,fn,Shift)

  27. 27

    在除动作事件以外的其他事件中按下了哪些键(修饰符)?

  28. 28

    在不知道Swing中的修饰键的情况下侦听斜线键击

  29. 29

    在窗口最小化时跟踪KeyPresses和修饰键,并登录到文件中

热门标签

归档