2010-10-10 6 views
1

J'essaie d'obtenir si un champ uitext est vide, et si c'est pour exécuter le code suivant dans une ibaction.comment détecter la longueur du champ uitext

float uu = ([u.text floatValue]); 
float ss = ([s.text floatValue ]); 
float aa = ([a.text floatValue ]); 


float x1float = sqrt((uu * uu) +(2*aa*ss)); 


v.text = [[NSString alloc]initWithFormat:@"%f", x1float]; 

où v.text est le texte à l'intérieur du UITextField

Répondre

5

Je suppose que votre principal défi ne vérifie pas simplement ici que la propriété d'un textUITextField est vide, mais l'obtenir pour effectuer cette vérification que l'utilisateur tape. Pour vérifier simplement si le champ de texte est vide, vous souhaitez simplement faire:

if (aTextField.text == nil || [aTextField.text length] == 0) 

Cependant, si vous essayez d'obtenir le champ de texte « automatiquement » effectuer le calcul à chaque fois qu'il est vide, procédez comme suit : Définissez un délégué pour le UITextField. La méthode textField:shouldChangeCharactersInRange:replacementString: du délégué est appelée avant que les caractères ne soient modifiés dans le champ de texte. Dans cette méthode, faire quelque chose comme:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
    [self performSelector:@selector(updateEmptyTextField:) withObject:textField afterDelay:0]; 
    return YES; 
} 

Vous effectuez updateEmptyTextField après un délai parce que le UITextField n'a pas encore appliqué le changement que son délégué vient d'être approuvé. Puis, updateEmptyTextField: faire quelque chose comme ceci:

- (void)updateEmptyTextField:(UITextField *)aTextField { 
    if (aTextField.text == nil || [aTextField.text length] == 0) { 
     // Replace empty text in aTextField 
    } 
} 

Remarque: Vous devrez peut-être exécuter manuellement le contrôle une fois lorsque votre point de vue est d'abord affiché, car textField:shouldChangeCharactersInRange:replacementString: ne sera pas appelé jusqu'à ce que l'utilisateur commence à taper dans le champ de texte .

+0

super message merci beaucoup –

+0

ne pouvons pas simplement utiliser [self updateEmptyTextField: textField]; directement à la place de [self performSelector: @selector (updateEmptyTextField :) withObject: textField afterDelay: 0] ;? –

Questions connexes