Как я могу разрешить возврат в UITextField? - PullRequest
2 голосов
/ 28 июня 2011

В моем проекте я должен ограничить длину UITextField до 6 символов.Это работает абсолютно нормально.Как только я заканчиваю редактирование и снова начинаю редактирование, и я нажимаю клавишу Backspace, мое приложение падает.

Вот код:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{   
    NSUInteger newLength = [txtLicense.text length] + [strNumber length] - range.length;
    return (newLength > 6) ? NO : YES;
}

Ответы [ 4 ]

5 голосов
/ 28 июня 2011

Попробуйте это.

- (BOOL)textField:(UITextField *)inputTextField shouldChangeCharactersInRange (NSRange)range replacementString:(NSString *)string
{
   return (textField.text.length >= 5 && range.length == 0) ? NO : YES;
}
2 голосов
/ 28 июня 2011

Реализуйте ваш метод делегата следующим образом -

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{
    NSString * toBeString = [textField.text stringByReplacingCharactersInRange:range
                                                                    withString:string];

    return ([toBeString length] > 6) ? NO : YES;
}

Мы получим, какой будет результирующая строка, и проверим ее длину.Таким образом, backspace будет работать.

2 голосов
/ 28 июня 2011

Если вы хотите добиться максимальной длины валидации в UITextField, вы можете использовать следующий рабочий код из одного из моих рабочих проектов.

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{
    if ([textField.text length] > 6) {
        textField.text = [textField.text substringToIndex:6];
        return NO;
    }
    return YES;
}
0 голосов
/ 28 июня 2011

Я не уверен, чего вы хотите достичь здесь, вы можете попробовать это, надеюсь, это поможет !!

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
 if (string && [string length] && [textField.text length] <= 6) {
 return NO;
 }

 return YES;
}
...