Je voudrais créer un dialogue de code PIN, comme celui que vous pouvez allumer sur l'iPhone.Création d'un dialogue de code PIN
Pour ceux qui ne l'ont pas vu, il se compose de quatre boîtes et d'un clavier numérique. Lorsque vous entrez un chiffre, un point apparaît dans la première case. Et ainsi de suite. Lorsque vous cliquez sur le bouton Supprimer, le dernier point est supprimé.
Je possède ce mis en place en quatre UITextFields et dans mon délégué-je écouter:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
[self performSelector:@selector(pickNext:) withObject:textField afterDelay:0.0];
return YES;
}
Le pickNext: méthode passe à l'autre UITextField, comme ceci:
- (void)pickNext:(UITextField*)textField
{
switch ([textField tag]) {
case 1:
[pin2 becomeFirstResponder];
break;
case 2:
[pin3 becomeFirstResponder];
break;
case 3:
[pin4 becomeFirstResponder];
break;
case 4:
[textField resignFirstResponder];
break;
default:
break;
}
}
Cette réalité fonctionne, mais le problème pour moi est que la clé de suppression ne produit aucune notification lorsque l'UITextField est déjà vide. Je n'ai donc aucun moyen de passer à l'UITextField précédent.
Alors quelqu'un a-t-il une meilleure idée de la façon de résoudre ce problème? Je pense à un champ de texte caché ... ??
Eh bien, ValueChanged ne fait apparemment rien pour un UITextField, au moins je n'ai aucun événement. Mais "Modification modifiée" envoie des événements, mais encore une fois, pas lorsque le champ est vide et que j'appuie sur la touche d'effacement. – Kobski