Question

J'ai un processus MultiView l'utilisateur entre dans les données et j'enregistrer les propriétés de la classe modèle chaque étape le long du chemin.

J'utilise textFieldDidEndEditing pour vérifier si l'entrée est valide, et si oui, enregistre les données saisies.

Sur le point de vue que j'ai un événement continueButtonClicked qui vérifie si tous les validations passent et si oui, charge la vue suivante. Je ne fixe pas les propriétés du modèle ici, parce que je pense que je ne devrais pas puisque chaque champ est enregistré dans le champ modèle 1 à la fois. Cependant, j'ai remarqué quelques problèmes.

Si l'utilisateur est à l'intérieur d'une zone de texte et clique sur le bouton « Continuer », l'événement se déclenche avant la continueButtonClicked textFieldDidEndEditing. Ce qui finit par se produire est que la vue suivante est rempli avec le « vieux » modèle avant la sauvegarde se passe dans textFieldDidEndEditing.

Qu'est-ce que je manque? Est-il correct de définir toutes les propriétés sur la continuer? Voilà comment je le ferais si je programmation pour le Web, mais il ne semble pas juste pour une application native.

Était-ce utile?

La solution

Pouvez-vous essayer au lieu et voir si cela résout votre problème?

textFieldShouldEndEditing:

Autres conseils

Vous pouvez appeler resignFirstResponder sur le champ de texte actif / textview (ou tous), ce qui déclenchera le textFieldDidEndEditing.

En général, pour ces questions d'édition de texte, une autre approche consiste à abuser de la méthode déléguée de -textField:shouldChangeCharactersInRange:..., dans lequel vous pouvez déterminer la nouvelle valeur pour chaque caractère saisi. Vous ne devez revenir à cette méthode s'il n'y a pas d'autre moyen.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top