UISearchBar и resignFirstResponder - PullRequest
       34

UISearchBar и resignFirstResponder

13 голосов
/ 06 августа 2010

У меня есть очень простой UITableView с подключенным UISearchBar, и вот поток того, что происходит

UITableView пуст, пользователь нажимает UISearchBar и вызывает клавиатуру. Как только пользователь нажимает кнопку поиска

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar { 
    [searchBar resignFirstResponder]; //move the keyboard out of the way
    //Code....  
}

Работает просто отлично, убирает клавиатуру и заполняет UITableView. Проблема в любых последующих попытках поиска.

Выполняются те же действия, что и раньше, однако клавиатура никогда не сбрасывается со счетов. У меня есть чувство, что что-то еще становится ответчиком, мне просто нужно немного ясности, чтобы понять, что на самом деле происходит.

Ответы [ 2 ]

30 голосов
/ 06 августа 2010

Не видя ваш код, трудно угадать. Однако, если вы включите:

[self.view endEditing:YES];

все просмотры уйдут в отставку первым ответчиком

2 голосов
/ 02 сентября 2016

Не идеально, но сработало для моего случая.Не будет работать без dispatch_after

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
    if (!searchText.length) {
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
            [searchBar resignFirstResponder];
        });   
    }
}

- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar {
    [self performSearchWithString:searchBar.text];
    [searchBar resignFirstResponder];
}
...