2012-06-15 2 views
2

Мне нужно идентифицировать удаленный символ. Например, когда я удаляю символ «@», мне нужно выполнить некоторые действия. Есть ли простой способ сделать это? Или мне нужно сохранить недавно напечатанный символ в переменной и проверить range.length == 0 в shouldChangeCharactersInRange?Идентификация удаляемого символа в UITextField или UITextView

Заранее спасибо.

ответ

1

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

5

На мой взгляд, это должно быть так же, как это:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
    NSString *textToChange = [[textField text] substringWithRange:range]; 
    NSRange rangeOld = [textToChange rangeOfString:@"@"]; 
    NSRange rangeNew = [string rangeOfString:@"@"]; 
    if (rangeOld.location != NSNotFound && rangeNew.location == NSNotFound) { 
     [self userDidRemoveAtSign]; 
    } 
    return YES; 
} 

Объяснение: Да, userDidRemoveAtSign - это ваш пользовательский метод, когда пользователь удаляет знак «@». Этот код находится в UITextField делегат. Каждый раз, когда текст изменения пользователя в UITextField, удалить, заменить или appent символы, TextField отправить сообщение

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

делегировать. В этом методе я проверяю, если знак @ помечен в замененном тексте, и если он содержится в замене.

+0

Привет, вы можете просто объяснить, что делает вышеуказанный код? также какой метод «userDidRemoveAtSign»? Не является обычным методом? –

+0

блестящее решение! –

0

Вы можете сделать это в скор этим путем, вы получите удален характер

пусть strDeletedChar = (textView.text, как NSString) .substringWithRange (диапазон)

0

Вы можете поймать deletede char в методе UITextView Делегат:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{ 
    NSString *deletedChar = [textView.text substringWithRange:range]; 
    if ([deletedChar isEqualToString:@"@"]) { 
     // do something 
     return YES; 
    }else{ 
    // do something 
    return YES; 
    } 
} 
Смежные вопросы