objective-c - NSTextField 委托(delegate)通知——如何获取文本?

标签 objective-c cocoa delegates notifications nstextfield

我一直在尝试学习使用 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/

相关文章:

Swift:测试用委托(delegate)调用的 URLSession

c++ - 委托(delegate)构造函数不能有其他内存初始化器 - 错误

objective-c - 当局部变量持有委托(delegate)引用时,它什么时候会被杀死?

ios - 在 iOS 应用程序中添加上下文帮助

ios - UIScrollView 中的 UITableView 不响应滚动后的第一次点击

ios - 如何以编程方式在 iOS 上创建和拨号 VPN 连接?

xcode - NSCollection View 背景色完全填充

objective-c - "property"是 Objective-C 中的某种 "instance variable"还是它们不同?

cocoa - 如何安全地写入 Cocoa 中的给定文件路径,并在必要时添加数字后缀?

ios - 如何在 UIPickerView 中自动换行