Si solo desea detectar cuándo ha cambiado el valor de un campo de texto, puede usar el método de delegado controlTextDidChange:
que NSTextField
hereda de NSControl
.
sólo tiene que conectar la salida del delegate
NSTextField
en el archivo de punta a su clase controlador, e implementar algo como esto:
- (void)controlTextDidChange:(NSNotification *)notification {
NSTextField *textField = [notification object];
NSLog(@"controlTextDidChange: stringValue == %@", [textField stringValue]);
}
Si va a crear el NSTextField
mediante programación, puede utilizar NSTextField
's setDelegate: método después de la creación para especificar el delegado:
NSTextField *textField = [[[NSTextField alloc] initWithFrame:someRect] autorelease];
[textField setDelegate:self]; // or whatever object you want
La delegación es uno de los patrones de diseño fundamentales utilizados en Cocoa. En resumen, le permite personalizar fácilmente el comportamiento de los objetos estándar (en este caso, los objetos de la interfaz de usuario) sin la complejidad que implica tener que subclasificar el objeto para agregar ese comportamiento adicional. Por ejemplo, otra forma de nivel inferior para detectar cuándo ha cambiado el texto en un campo de texto podría ser crear su propia subclase personalizada NSTextField
en la que sobrescriba el método keyDown:
que NSTextField
hereda de NSResponder
. Sin embargo, la creación de subclases de este tipo es difícil porque puede requerir que tenga un conocimiento profundo de la jerarquía de herencia del objeto. Para obtener más información, definitivamente echa un vistazo a los siguientes:
Cocoa Fundamentals Guide: Delegates and Data Sources
En cuanto a lo que significa id <NSTextFieldDelegate>
: significa un objeto genérico (id
) que se declara su conformidad con el protocolo <NSTextFieldDelegate>
. Para obtener más información sobre los protocolos, consulte The Objective-C Programming Language: Protocols. proyecto GitHub
Muestra en: https://github.com/NSGod/MDControlTextDidChange
Podría aclarar si usted está buscando para ser notificado cuando los cambios stringvalue del TextField, o cuando los cambios de texto seleccionados (como las ofertas de respuestas relacionadas con)? – NSGod