Backspace номерной панели не обновляет textField.text.length - PullRequest
1 голос
/ 02 мая 2011

Я в настоящее время форматирую свое текстовое поле в xcode, к каждому 5-му символу я добавляю дефис.Тем не менее, у меня много проблем, в настоящее время я хочу проверить свой textfields.text.length, а затем, как только длина достигнет 23 символов, кнопка подтверждения будет доступна для нажатия.До сих пор это работает, когда у меня возникают проблемы, скажем, если пользователь вводит 23 символа и кнопка доступна для нажатия, если пользователь решил вернуться и удалить один символ, нет ничего, чтобы обновить новую длину текста, так как я не знаю, какпоймать кнопку удаления на цифровой клавиатуре ... Доза кто-нибудь знает, как это сделать?

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

    NSString *separator = @"-";
    int seperatorInterval = 5;
    NSString *originalString = [regTextField.text stringByReplacingOccurrencesOfString:separator withString:@""];



    if (![originalString isEqualToString:@""] && ![string isEqualToString:@""]) {

        NSString *lastChar = [regTextField.text substringFromIndex:[regTextField.text length] - 1];
        int modulus = [originalString length] % seperatorInterval;
        [self validateTextFields];

        if (![lastChar isEqualToString:separator] && modulus == 0) {

            regTextField.text = [regTextField.text stringByAppendingString:separator];
        }
    }
    [self validateTextFields];
    return YES;
}

    -(IBAction) validateTextFields {

    if (regTextField.text.length >= 22){
        [submitButton setEnabled:YES]; //enables submitButton
    } 
    else {
        [submitButton setEnabled:NO]; //disables submitButton

    }

}

1 Ответ

1 голос
/ 02 мая 2011

Попробуйте что-то вроде этого:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
    // Any new character added is passed in as the "text" parameter
    if (!([text isEqualToString:@""] && range.length == 1) && [textView.text length] >=140 ) {
        return NO;
    }
    // For any other character return TRUE so that the text gets added to the view
    return YES;
}

Где блок:

([text isEqualToString:@""] && range.length == 1) 

Проверка на возврат.

Захват возврата наклавиатура цифровой клавиатуры

...