TextField Validation avec l'expression régulière
J'ai besoin d'aide avec un code qui ressemble à un champ de texte assurez-vous qu'il commence par un (+ ou -) alors a 3 entiers après.
De manière valide les données ressemble à +234 ou -888
J'ai donc commencé ce code, mais il y a 2 problèmes avec elle
- Il valide correctement que seulement 4 caractères sont entrés. Mais pour quelque raison, vous devez prendre le focus hors de la zone de texte pour le bouton Terminé sur le clavier à feu et à masquer le clavier. Si je ne mets moins de 4 caractères dans la zone de texte, puis sur la touche Terminé fonctionne très bien. Mais je ne veux pas l'utilisateur d'entrer quoi que ce soit, mais de 4 caractères, puis appuyez sur Terminé et masquer le clavier. C'est le premier problème....
- Je ne suis pas familier avec les expressions régulières et comment les utiliser dans votre iphone. J'ai donc besoin d'ajouter à ce code une expression régulière pour la condition ci-dessus.
-(BOOL)textField:(UITextField*)textFieldshouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string]; return !([newString length] > 4); } //Done button to hide the keyboard -(IBAction)Done:(id)sender { }
source d'informationauteur Nick LaMarca
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas sûr de la façon dont vous souhaitez gérer de la saisie de l'utilisateur et de la rétroaction. D'abord, je vais vous montrer une façon simple de maintenir l'utilisateur dans le mode d'édition de la zone de texte si son entrée n'est pas valide.
Tout d'abord deux délégué méthodes:
De la méthode d'essai, qui renvoie simplement OUI ou NON si l'entrée est valide ou pas:
Que c'est. Cependant je le recommande à montrer certaines en direct le statut de l'utilisateur si son entrée est ok ou pas. Ajouter la suite de notification, par exemple dans votre méthode viewDidLoad:
Enfin: Si vous avez besoin d'accéder à la capture des groupes (+ ou - et le nombre) de l'expression régulière, le code suivant va vous aider:
Valider e-Mail id ou Téléphone numéro à l'aide Expression Régulière
Ddelegate méthodes:
Retourne OUI ou NON si l'entrée est valide ou pas:
Utilisation UIPickerView au lieu
Je suis au départ de la question titre, mais à mon humble avis, considérant ce que vous avez besoin, il peut être préférable d'utiliser UIPickerView d'avoir un "rouet" type d'entrée, comme vous le faites dans l'application Horloge lors de la configuration de l'alarme. Il peut commencer à "+000" et l'utilisateur peut culbuter certains des quatre roues ([+-]. [0-9], [0-9], [0-9]) en tant que de besoin
Mettre en œuvre les
-textField:shouldChangeCharactersInRange:replacementString
dans votreUITextFieldDelegate
et l'utilisationNSRegularExpression
pour valider les changements.