【问题标题】:Add hotkey when editing a NSTextField编辑 NSTextField 时添加热键
【发布时间】:2010-11-16 06:27:35
【问题描述】:

是否可以仅在编辑某个 NSTextField 时添加热键?例如,当您在此文本字段中时,如果您按 Command + 1 插入一个字符串,按 Command + 2 插入另一个文本字符串等,我希望它,但仅在您编辑该 NSText 字段时。

我尝试向我的子类 NSTextField 添加一个 keyDown 方法,但这似乎并没有被解雇。如果我将其更改为 keyUp 它会被触发,但如果命令键被按住则不会。

当我搜索热键时,我发现的唯一信息似乎是关于全局热键(即使在应用程序不可见时也会激活的热键),这不是我想要的。

【问题讨论】:

    标签: objective-c cocoa nstextfield


    【解决方案1】:

    如果您有一个带有该键盘快捷键的菜单项,您可以实现 validateUserInterfaceItem: 以在您的字段位于响应者链中时启用它。我不确定这是否适用于隐藏的菜单项。

    【讨论】:

    • +1 用于尝试这条路径。菜单已经配备了这个功能,所以从一个开始,如果你真的不想要菜单项,试着让它不可见,看看键盘等效项是否仍然有效。
    • 我的应用是“代理”并且没有 MainMenu,很遗憾,所以我不确定是否可以这样做。
    【解决方案2】:

    NSTextField 的不处理 keyDown: 自己。相反,他们似乎依赖于称为 Field Editors 的中介(从http://www.cocoabuilder.com/archive/cocoa/51299-custom-nstextfield-keydown.html 的类似问题中找到此信息)。

    Apple 提供了有关该主题的更多信息 - http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/TextEditing/Tasks/FieldEditor.html

    【讨论】:

      【解决方案3】:

      当我的文本字段是第一响应者时,我最终将我的窗口子类化并覆盖了 sendEvent。

      【讨论】:

        猜你喜欢
        • 2012-07-25
        • 1970-01-01
        • 1970-01-01
        • 2023-04-05
        • 2013-08-26
        • 2011-10-31
        • 2014-04-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多