UISearchBar и resignFirstResponder

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

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

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

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

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

Ответ 1

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

[self.view endEditing:YES];

все представления уйдут с первого ответчика.

Ответ 2

Не идеально, но я работал для своего дела. Не будет работать без 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];
}