Correggi il limite massimo di caratteri nel campo di testo
-
19-08-2019 - |
Domanda
Come si può imporre un limite di caratteri fissi su un campo di testo in Cocos2d?
Soluzione
Per correggere il numero massimo di caratteri in un UITextField, è possibile implementare il metodo delegato UITextField textField: shouldChangeCharactersInRange
per restituire false se l'utente tenta di modificare la stringa oltre la lunghezza fissa.
//Assume myTextField is a UITextField
myTextField.delegate = self;
//implement this UITextFiledDelegate Protocol method in the same class
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if ([textField.text length] > kMaxTextFieldStringLength)
return NO;
else
return YES;
}
Altri suggerimenti
Per consentire all'utente di utilizzare backspace, è necessario utilizzare il codice in questo modo (range.length è solo zero quando si preme backspace):
myTextField.delegate = self;
//implement this UITextFiledDelegate Protocol method in the same class
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if (textField.text.length >= 10 && range.length == 0)
return NO;
return YES;
}
L'esempio sopra funziona solo se l'utente sta modificando alla fine del campo di testo (ultimo carattere). Per verificare la lunghezza effettiva (indipendentemente da dove l'utente sta modificando la posizione del cursore) del testo di input, utilizzare questo:
myTextField.delegate = self;
//implement this UITextFiledDelegate Protocol method in the same class
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if (range.location > kMaxTextFieldStringLength)
return NO;
else
return YES;
}