Можно ли узнать, печатает ли пользователь или удаляет символы в текстовом поле? - PullRequest
9 голосов
/ 04 марта 2011

Я использую метод делегата текстового поля "shouldChangeCharactersInRange", и я хотел знать, есть ли способ узнать, удаляет ли пользователь символы или печатает символы? Кто-нибудь знает? спасибо.

Ответы [ 3 ]

27 голосов
/ 04 марта 2011
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    if (range.length > 0)
    {
         // We're deleting
    }
    else
    {
        // We're adding
    }
}
5 голосов
/ 04 марта 2011

Логика: Для нахождения удаления вам нужно построить строку после каждого типа буквы, затем вы можете проверить при каждом изменении, является ли строка подстрокой строки buid, то это означает, что пользователь удалил последнюю букву, и еслистрока сборки - это подстрока текста textField, затем пользователь добавляет письмо.

вы можете использовать метод делегата, который вы используете с этой логикой, или вы можете использовать уведомление

, вы можете использовать это уведомление для поискалюбые изменения

добавьте эти строки в viewDidLoad

NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];

    [notificationCenter addObserver:self
                           selector:@selector (handle_TextFieldTextChanged:)
                               name:UITextFieldTextDidChangeNotification
                             object:yourTextField];

и сделайте эту функцию

- (void) handle_TextFieldTextChanged:(id)notification {

  //you can implement logic here.
    if([yourTextField.text isEqulatToString:@""])
    {   
        //your code
    }

}
2 голосов
/ 04 марта 2011
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    NSUInteger newLength = [textField.text length] + [string length] - range.length;
    if (newLength > [textField.text length])
      // Characters added
    else
      // Characters deleted
    return YES;
}
...