可可 – NSTextField的文本更改通知

可可 – NSTextField的文本更改通知,第1张

概述我想使用代码从这个问题的答案: How to observe the value of an NSTextField在NSTextField为了观察对存储在NSTextField的字符串的更改。 [[NSNotificationCenter defaultCenter] addObserverForName:NSTextViewDidChangeSelectionNotification 我想使用代码从这个问题的答案: How to observe the value of an NSTextField在NSTextFIEld为了观察对存储在NSTextFIEld的字符串的更改。

[[NSNotificationCenter defaultCenter]    addobserverForname:NSTextVIEwDIDChangeSelectionNotification    object:self.textVIEw     queue:[NSOperationQueue mainQueue]     usingBlock:^(NSNotification *note){    NSLog(@"Text: %@",self.textVIEw.textStorage.string);}];

这里使用的类是一个NSTextVIEw。我在NSTextFIEld中找不到要使用的通知,而不是NSTextVIEwDIDChangeSelectionNotification。

在NSTextFIEld中是否有可用的通知可以在这种情况下使用?

解决方法 如果只想检测文本字段的值何时更改,可以使用NSTextFIEld从NSControl继承的 controlTextDidChange:委托方法。

只需将nib文件中的NSTextFIEld的委托插口连接到控制器类,并实现如下:

- (voID)controlTextDIDChange:(NSNotification *)notification {    NSTextFIEld *textFIEld = [notification object];    NSLog(@"controlTextDIDChange: stringValue == %@",[textFIEld stringValue]);}

如果您以编程方式创建NSTextFIEld,则可以在创建后使用NSTextFIEld的setDelegate:方法来指定委托:

NSTextFIEld *textFIEld = [[[NSTextFIEld alloc] initWithFrame:someRect] autorelease];[textFIEld setDelegate:self]; // or whatever object you want

委托是Cocoa中使用的基本设计模式之一。简而言之,它允许您轻松地定制标准对象(在这种情况下,用户界面对象)的行为,而不必将子类化对象以添加附加行为。例如,检测文本字段中的文本何时更改的另一种较低级别的方法可能是创建您自己的自定义NSTextFIEld子类,在该子类中覆盖NSTextFIEld从NSResponder继承的keyDown:方法。然而,这样的子类化很困难,因为它可能需要你对对象的继承层次结构有一个深入的了解。有关详细信息,请查看以下内容:

Cocoa Fundamentals Guide: Delegates and Data Sources

关于什么ID< NSTextFIEldDelegate>意味着:它意味着一个通用对象(ID),它宣告自己符合< NSTextFIEldDelegate>协议。有关协议的更多信息,请参阅The Objective-C Programming Language: Protocols。

示例GitHub项目:https://github.com/NSGod/MDControlTextDidChange

总结

以上是内存溢出为你收集整理的可可 – NSTextField的文本更改通知全部内容,希望文章能够帮你解决可可 – NSTextField的文本更改通知所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1044597.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-24
下一篇2022-05-24

发表评论

登录后才能评论

评论列表(0条)

    保存