2010-08-31 5 views
0

Tout d'abord, je dois le faire sans IB et sans les techniques avancées d'Objective-C comme KVO.Valider les valeurs décimales max/min dans un NSTextField

Mon problème vient du simple fait que je ne trouve pas un moyen d'obtenir toute la nouvelle valeur de chaîne du champ de texte.

J'ai essayé d'utiliser la fonction de délégué:

- (BOOL)textView:(NSTextView *)aTextView shouldChangeTextInRange:(NSRange)affectedCharRange replacementString:(NSString *)replacementString 

mais cela ne me donne non seulement la chaîne de remplacement pas la chaîne complète j'ai besoin pour validation. Je peux ensuite utiliser le texte

J'ai trouvé

- (void)textDidChange:(NSNotification *)aNotification 
- (void)controlTextDidChange:(NSNotification *)aNotification 

mais quand je reçois cette demande, il est déjà à la fin et le dernier contenu du champ de texte est déjà parti. Alors, quelle est la meilleure façon de gérer cela?

Et oui, j'ai lu binding NSTextField to NSNumber mais cela ne me donne aucune idée de comment résoudre mon problème.

Tout ce dont j'ai besoin est une simple fonction de test "- (BOOL) acceptNewValue (NSString string)". Pourquoi est-ce que tout est si compliqué avec Cocoa, il commence à se sentir comme MFC.

Répondre

3

Je suis essayé d'utiliser la fonction de délégué:

Vous voulez dire la mise en œuvre de la méthode. L'utiliser signifierait l'appeler, qui est le travail de NSTextView, et c'est une méthode Objective-C, pas une fonction C.

- (BOOL)textView:(NSTextView *)aTextView shouldChangeTextInRange:(NSRange)affectedCharRange replacementString:(NSString *)replacementString 

mais cela ne me donne non seulement la chaîne de remplacement et non la chaîne complète j'ai besoin pour validation.

Sauf qu'il fait: Vous pouvez demander à la vue de texte pour the previous complete string, apply the change yourself à une copie mutable de cette chaîne, puis valider la chaîne résultante. Renvoie NO si la modification entraîne une entrée non valide.

+0

Merci cela résout le problème. Mais j'en ai un nouveau http://stackoverflow.com/questions/3605571/how-to-set-nsformatter-to-accept-negative-integer-values – Lothar

Questions connexes