Wenn Sie nur feststellen möchten, wann sich der Wert eines Textfelds geändert hat, können Sie die controlTextDidChange:
Delegatmethode verwenden, die NSTextField
von NSControl
erbt.
Schließen Sie einfach den delegate
Ausgang der NSTextField
in der nib-Datei auf Ihre Controller-Klasse, und so etwas wie dies umzusetzen:
- (void)controlTextDidChange:(NSNotification *)notification {
NSTextField *textField = [notification object];
NSLog(@"controlTextDidChange: stringValue == %@", [textField stringValue]);
}
Wenn Sie die NSTextField
programmatisch erstellen, können Sie NSTextField
‚s verwenden setDelegate: Methode nach der Erstellung, um den Delegaten anzugeben:
Delegierung ist eines der grundlegenden Entwurfsmuster, die in ganz Cocoa verwendet werden. Kurz gesagt, ermöglicht es Ihnen, das Verhalten von Standardobjekten (in diesem Fall Benutzeroberflächenobjekte) ohne die Komplexität, die mit der Unterklasse des Objekts einhergeht, um dieses zusätzliche Verhalten hinzuzufügen, einfach anzupassen. Eine andere Möglichkeit auf niedrigerer Ebene, zu erkennen, wenn sich der Text in einem Textfeld geändert hat, könnte beispielsweise darin bestehen, Ihre eigene benutzerdefinierte NSTextField
Unterklasse zu erstellen, in der Sie die keyDown:
-Methode überschreiben, die NSTextField
von NSResponder
erbt. Eine solche Unterklassenbildung ist jedoch schwierig, da Sie eine genaue Kenntnis der Vererbungshierarchie des Objekts benötigen. Für mehr Informationen, auf jeden Fall überprüfen Sie folgendermaßen vor:
Cocoa Fundamentals Guide: Delegates and Data Sources
In Bezug auf was id <NSTextFieldDelegate>
bedeutet: es bedeutet, ein generisches Objekt (id
), der sich als konform mit dem <NSTextFieldDelegate>
Protokoll erklärt. Weitere Informationen zu Protokollen finden Sie unter The Objective-C Programming Language: Protocols.
Probe GitHub Projekt: https://github.com/NSGod/MDControlTextDidChange
Können Sie klären, ob Sie benachrichtigt zu werden suchen, wenn die String des Textfeldes ändert, oder wenn die ausgewählten Textänderungen (wie die verknüpften Antwort befasst sich mit) – NSGod