Domanda

Come si può imporre un limite di caratteri fissi su un campo di testo in Cocos2d?

È stato utile?

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; 
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top