Установите продолжительность максимума UITextField [дубликат]

Этот вопрос уже имеет ответ здесь:

Там какой-либо путь состоит в том, чтобы установить максимальную длину на UITextField?

Что-то как MAXLENGTH приписывает в полях ввода HTML.

63
задан typeoneerror 5 May 2010 в 06:36
поделиться

2 ответа

Я думаю, что такого свойства нет.

Но текст, который вы назначаете UILabel, должен быть NSString. И прежде чем присвоить эту строку текстовому свойству UILabel, вы можете, например, использовать следующий метод NSString для обрезки строки по заданному индексу (ваша максимальная длина):

- (NSString *)substringToIndex:(NSUInteger)anIndex
1
ответ дан 24 November 2019 в 16:01
поделиться

ОБНОВЛЕНИЕ

Я не могу удалить этот ответ, потому что он принят, но он неправильный. Вот правильный код, скопированный из TomA ниже:

#define MAXLENGTH 10

- (BOOL)textField:(UITextField *) textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

    NSUInteger oldLength = [textField.text length];
    NSUInteger replacementLength = [string length];
    NSUInteger rangeLength = range.length;

    NSUInteger newLength = oldLength - rangeLength + replacementLength;

    BOOL returnKey = [string rangeOfString: @"\n"].location != NSNotFound;

    return newLength <= MAXLENGTH || returnKey;
}

ORIGINAL

Я думаю, вы имеете в виду UITextField. Если да, то есть простой способ.

  1. Реализуйте протокол UITextFieldDelegate
  2. Реализуйте метод textField: shouldChangeCharactersInRange: replaceString: .

Этот метод вызывается при каждом нажатии символа или предыдущей замене символа. в этом методе вы можете сделать что-то вроде этого:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    if ([textField.text length] > MAXLENGTH) {
        textField.text = [textField.text substringToIndex:MAXLENGTH-1];
        return NO;
    }
    return YES;
}
40
ответ дан 24 November 2019 в 16:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: