我一直在尝试学习使用 Xcode,但我对如何注册 NSTextField
已更改感到困惑。本质上,我有一个 NSTextField
和一个按钮。单击该按钮会对字段中的文本进行处理。但是,我希望能够在不需要使用文本字段“Action:send on end editing”的情况下获取字段的文本。也就是说,我希望能够输入文本并立即按下按钮,而无需按回车键或跳出文本框。似乎这样做的方法是为响应
NSTextField
设置一个委托(delegate)
- (void)controlTextDidChange:(NSNotification *)aNotification
但是我不明白如何获取已经输入的文本。我认为这与
[[aNotification userInfo] valueForKey:@"NSFieldEditor"];
但我真的不知道从那里去哪里。
最佳答案
您走在正确的轨道上!您从通知的用户信息字典中获取的对象是 Field Editor ,它只是一个委托(delegate)文本字段处理文本输入的 NSTextView
。
一旦你有了那个对象,你所要做的就是向它询问它的textStorage
,这是一个NSTextStorage
。 * 持有文本的对象。反过来,该对象有它的 string
,它是一个普通的旧 NSString
,只包含字符。
NSTextView * fieldEditor = [[aNotification userInfo] objectForKey:@"NSFieldEditor"];
NSString * theString = [[fieldEditor textStorage] string];
* NSAttributedString
的子类,它是一个包含字符串和相关“属性”(如颜色、字体和下划线)的对象。
关于objective-c - NSTextField 委托(delegate)通知——如何获取文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5969285/