UITextField Как проверить, нажата ли клавиша удаления - PullRequest
6 голосов
/ 01 апреля 2011

Я реализую панель поиска из моей локальной базы данных, которая выполняет поиск в БД, когда пользователь вводит информацию. Проблема заключается в том, что я сопоставляю последние символы с предыдущими и затем отправляю их для поиска. Как я могу удалить символ (последний) когда нажата клавиша "назад". Я использую

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

Спасибо за ответы

Ответы [ 4 ]

17 голосов
/ 01 апреля 2011

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

NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];

И что neString вы, вероятно, можете использовать «как есть» для поиска в базе данных.

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

if ([string length] == 0 && range.length > 0)
  //Some characters deleted
3 голосов
/ 11 августа 2015

для быстрых пользователей:

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {

    if string.characters.count == 0 && range.length > 0 {
        // Back pressed
        return false
    }

    return true
}
2 голосов
/ 19 декабря 2012

Лучшая идея - в textField: shouldChangeCharactersInRange: replaceString: установить условие для возврата NO, если больше нет символов ...

if ((range.location == 0) && (string.length == 0))
{        
    NSLog(@"is cleared!");
    return NO;
}

return YES;
0 голосов
/ 10 января 2015
if (self.textView.text.length > 0) 
{ 
    [self.textView deleteBackward]; 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...