Vorrei creare una finestra di dialogo con codice PIN, come quella che è possibile accendere su iPhone.Creazione dialogo pin-code
Per coloro che non l'hanno visto, si compone di quattro caselle e un tastierino numerico. Quando si inserisce una cifra, nella prima casella appare un punto. E così via. Quando si preme il pulsante Elimina, l'ultimo punto viene rimosso.
ho questo impostato come quattro UITextFields e nel mio delegato I ascoltare:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
[self performSelector:@selector(pickNext:) withObject:textField afterDelay:0.0];
return YES;
}
Il pickNext: il metodo passa al successivo UITextField, in questo modo:
- (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;
}
}
Questo in realtà funziona, ma il problema per me è che la chiave di cancellazione non produce alcuna notifica quando UITextField è già vuoto. Quindi non ho modo di passare al precedente UITextField.
Così qualcuno ha una migliore idea di come risolvere questo problema. Sto pensando al campo di testo nascosto ... ??
Bene, ValueChanged apparentemente non fa nulla per un UITextField, almeno non ho eventi. Ma "Modifica modificata" invia gli eventi, ma ancora una volta, non quando il campo è vuoto e premo il tasto Canc. – Kobski