
[[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的文本更改通知所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)