我正在制作一个应用程序,当用户输入 NSTextField
时,它会为按键添加声音。 。我需要捕获击键并知道每个按键是什么(例如“d”或“空格”或“6”)。该应用程序取决于此。没有其他办法解决这个问题。
每个窗口都是一个NSDocument
文件所有者,并且它有一个 NSTextField
其中,文档数据被解析,用户将在其中键入。
经过几个小时在互联网上解析答案并破解代码后,四个最常重复的答案是:
- “事情不是这样的,这是(不相关的答案)”
- “您是 Cocoa 新手,这是一个坏主意,请使用
control:textView:doCommandSelector:
”,它不会为我提供单独的按键,并且某些按键需要自己独特的声音触发器。 - “使用
controlTextDidChange:
或textView:shouldChangeTextInRange:replaceString:
” controlTextDidChange 不会为我提供单独的键,第二个键仅适用于 textViews 或 UIKit。 - 人们感到困惑并回答
UIKit
的建议而不是AppKit
,仅适用于 iOS。
奇怪的是,如果我子类 NSTextField
,它收到 -keyUp
。不知道在哪里-keyDown
即将进行。
所以我的最终问题是:你能告诉我某种逐步的方法来实际捕获发送到 NSTextField
的 keyDown 吗? ?即使这是一个黑客。即使这是一个糟糕的主意。
我很想解决这个问题!非常感谢您的阅读。
最佳答案
controlTextDidChange 是一个很好的解决方案,但不要忘记这两件重要的事情:
- 将 textField 的委托(delegate)绑定(bind)设置为定义 controlTextDidChange 方法的对象。通常,在基于文档的应用程序中,它是窗口 Controller ,否则是您的应用程序委托(delegate)。
- 在属性检查器部分将文本字段的控件设置为“连续”
如果你错过了这些要点,你将不会有结果。
关于macos - NSTextField - 按下各个按键时的通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20308985/