Écoutez un changement de valeur de mon champ de texte
J'essaie de comprendre comment attraper un texte "changé" de l'événement à partir d'un champ de texte dans ma fenêtre. J'ai l'habitude de Java est "l'action des auditeurs, et ne peut pas trouver quelque chose de semblable en Objective-C/Cocoa.
J'ai cherché pendant un bon moment et la "valeur de la clé de l'observation" protocole, mais les observeValueForKeyPath:
méthode (fonction?) déclenche uniquement lorsque la valeur de mon champ de texte a été changé dans le code (à l'aide de [textfield setStringValue:...]
, par exemple), pas en tapant dans.
Comment puis-je "à l'écoute" de la variation de la valeur lorsqu'un utilisateur tape dans le champ de texte?
source d'informationauteur Eike Cochu
Vous devez vous connecter pour publier un commentaire.
Vous pouvez définir un délégué de votre
NSTextField
instance et qui ont le délégué de mettre en œuvre la méthode suivante:Votre délégué objet peut être le délégué d'application, une fenêtre contrôleur, une-vue-contrôleur, ou quelque autre objet dans votre application. Le délégué peut être par programmation définie par
ou, dans Interface Builder, par la
delegate
prise de courant disponible dans leNSTextField
de contrôle.Noter que si il y a de multiples contrôles accroché à la même délégué a ensuite
-controlTextDidChange:
sera envoyé pour chaque contrôle, c'est à dire, la même méthode est appelée pour les différents contrôles. Si vous voulez des comportements différents en fonction de la commande lorsque le texte a changé, vous pouvez utiliser-[NSNotification object]
pour identifier le contrôle qui a envoyé la notification.Par exemple, si vous avez deux champs de texte correspondant aux points de vente
nameField
etaddressField
et vous avez mis le même délégué pour les deux champs, puis:Sinon, vous pourriez avoir un délégué pour chaque champ de texte. Dans ce cas, il n'y aurait pas besoin de tester
[notification object]
.Vous pouvez également vous suffit de brancher jusqu'à la "Modification Changé" de l'IB et de créer de l'Action pour le manipuler
Cela fonctionne pour moi
Vous pouvez utiliser
textFieldShouldBeginEditing:
méthode deUITextFieldDelegate
. Sous iOS, les auditeurs sont appelés NSNotificationsMODIFIER
En objective-c beaucoup de UIObjects ont un protocole correspondant de classe qu'on appelle le "délégué" Le délégué est chargé de réagir aux événements. Donc, pour être en mesure de répondre ou être informés des actions que vous devez mettre en œuvre le délégué et ses méthodes.