Исправить максимальный лимит символов в текстовом поле

StackOverflow https://stackoverflow.com/questions/472034

  •  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; 
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top