Как я могу разрешить возврат в UITextField?

В моем проекте я должен ограничить длину 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;
}

person Baby Groot    schedule 28.06.2011    source источник


Ответы (4)


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

- (BOOL)textField:(UITextField *)inputTextField shouldChangeCharactersInRange (NSRange)range replacementString:(NSString *)string
{
   return (textField.text.length >= 5 && range.length == 0) ? NO : YES;
}
person Rakesh Bhatt    schedule 28.06.2011
comment
Идеальный. Абсолютно то, что я хотел. Спасибо. :) - person Baby Groot; 28.06.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;
}

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

person Deepak Danduprolu    schedule 28.06.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;
}
person Janak Nirmal    schedule 28.06.2011

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

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