I would like to use the code from the answer to this question: How to observe the value of an NSTextField on an NSTextField in order to observe changes on the string stored in the NSTextField.
[[NSNotificationCenter defaultCenter]
addObserverForName:NSTextViewDidChangeSelectionNotification
object:self.textView
queue:[NSOperationQueue mainQueue]
usingBlock:^(NSNotification *note){
NSLog(@"Text: %@", self.textView.textStorage.string);
}];
The class used here is an NSTextView. I can't find a notification in NSTextField to use instead of NSTextViewDidChangeSelectionNotification.
Is there a notification available in NSTextField that can be used in this case ?
Best Solution
If you just want to detect when the value of a text field has changed, you can use the
controlTextDidChange:
delegate method thatNSTextField
inherits fromNSControl
.Just connect the
delegate
outlet of theNSTextField
in the nib file to your controller class, and implement something like this:If you're creating the
NSTextField
programmatically, you can useNSTextField
's setDelegate: method after creation to specify the delegate:Delegation is one of the fundamental design patterns used throughout Cocoa. Briefly, it allows you to easily customize the behavior of standard objects (in this case, user interface objects) without the complexity involved in having to subclass the object to add that additional behavior. For example, another lower-level way to detect when the text in a textfield has changed might be to create your own custom
NSTextField
subclass in which you override thekeyDown:
method thatNSTextField
inherits fromNSResponder
. However, subclassing like that is difficult because it can require that you have an intimate knowledge of the object's inheritance hierarchy. For more info, definitely check out the following:Cocoa Fundamentals Guide: Delegates and Data Sources
Regarding what
id <NSTextFieldDelegate>
means: it means a generic object (id
) that declares itself as conforming to the<NSTextFieldDelegate>
protocol. For more info on protocols, see The Objective-C Programming Language: Protocols.Sample GitHub project at: https://github.com/NSGod/MDControlTextDidChange