Исправить максимальный лимит символов в текстовом поле
-
19-08-2019 - |
Вопрос
Как можно установить фиксированный лимит символов для текстового поля в Cocos2d?
Решение
Чтобы исправить максимальное количество символов в UITextField, вы можете реализовать метод делегирования UITextField textField:shouldChangeCharactersInRange
, чтобы он возвращал значение false, если пользователь пытается отредактировать строку за фиксированной длиной. Р>
//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;
}
Другие советы
Чтобы позволить пользователю использовать возврат, вы должны использовать такой код (диапазон. длина равна нулю только при нажатии возврата):
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;
}
Приведенный выше пример работает, только если пользователь редактирует в конце текстового поля (последний символ). Для проверки фактической длины (независимо от того, где пользователь редактирует позицию курсора) входного текста используйте это:
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;
}