Ответ 1
Не видя своего кода, трудно угадать. Однако если вы включили:
[self.view endEditing:YES];
все представления уйдут с первого ответчика.
У меня очень простой UITableView с прикрепленным UISearchBar, и здесь поток происходящего
UITableView пуст, пользователь нажимает UISearchBar и вызывает клавиатуру. Как только пользователь нажат кнопку поиска
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar {
[searchBar resignFirstResponder]; //move the keyboard out of the way
//Code....
}
Работает отлично, а клавиатура отключена и заполняет UITableView. Проблема заключается в любых последующих попытках поиска.
Те же шаги, что и раньше, происходят, однако клавиатура никогда не увольняется. Я чувствую, что что-то еще становится ответчиком, мне просто нужно немного ясности, чтобы понять, что на самом деле происходит.
Не видя своего кода, трудно угадать. Однако если вы включили:
[self.view endEditing:YES];
все представления уйдут с первого ответчика.
Не идеально, но я работал для своего дела. Не будет работать без 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];
}