macos - NSTextField - 按下各个按键时的通知

标签 macos cocoa

我正在制作一个应用程序,当用户输入 NSTextField 时,它会为按键添加声音。 。我需要捕获击键并知道每个按键是什么(例如“d”或“空格”或“6”)。该应用程序取决于此。没有其他办法解决这个问题。

每个窗口都是一个NSDocument文件所有者,并且它有一个 NSTextField其中,文档数据被解析,用户将在其中键入。

经过几个小时在互联网上解析答案并破解代码后,四个最常重复的答案是:

  1. “事情不是这样的,这是(不相关的答案)”
  2. “您是 Cocoa 新手,这是一个坏主意,请使用 control:textView:doCommandSelector:”,它不会为我提供单独的按键,并且某些按键需要自己独特的声音触发器。
  3. “使用 controlTextDidChange:textView:shouldChangeTextInRange:replaceString:” controlTextDidChange 不会为我提供单独的键,第二个键仅适用于 textViews 或 UIKit。
  4. 人们感到困惑并回答 UIKit 的建议而不是AppKit ,仅适用于 iOS。

奇怪的是,如果我子类 NSTextField ,它收到 -keyUp 。不知道在哪里-keyDown即将进行。

所以我的最终问题是:你能告诉我某种逐步的方法来实际捕获发送到 NSTextField 的 keyDown 吗? ?即使这是一个黑客。即使这是一个糟糕的主意。

我很想解决这个问题!非常感谢您的阅读。

最佳答案

controlTextDidChange 是一个很好的解决方案,但不要忘记这两件重要的事情:

  1. 将 textField 的委托(delegate)绑定(bind)设置为定义 controlTextDidChange 方法的对象。通常,在基于文档的应用程序中,它是窗口 Controller ,否则是您的应用程序委托(delegate)。

enter image description here

  • 在属性检查器部分将文本字段的控件设置为“连续”
  • enter image description here

    如果你错过了这些要点,你将不会有结果。

    关于macos - NSTextField - 按下各个按键时的通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20308985/

    相关文章:

    macos - NSAttributedString 高亮/背景颜色显示在行之间(丑陋)

    objective-c - XCode/Cocoa Objective-C - 几个问题

    macos - '第二个实例'在mac上的 Electron 中触发而不是 'open-url'

    swift - 最新版本的照片库是否已弃用 fetchAssetCollections 方法?

    macos - 尝试在 MacOS 上调试时 Azure 函数抛出错误

    objective-c - 如何正确使用自定义 View ?

    objective-c - 如何自定义 NSOutlineView 以具有边框颜色?

    macos - 在用于插入和搜索正常路径的 trie 中,ascii 1-31 是否值得考虑?

    swift - 将数据的排序列表保存到核心数据中

    objective-c - 从 XML 文件动态加载 NSPopUpButton 内容