2010-08-06 3 views
11

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

UITableView пуст, пользователь вводит UISearchBar, и воспитывает клавиатуру. После того, как пользователь вводит кнопку Поиск

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

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

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

ответ

29

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

[self.view endEditing:YES]; 

все взгляды уходят в отставку с первого ответчика.

+0

это отлично работает для меня! – Raptor

+0

У меня были похожие проблемы с ячейками UICollectionView, содержащими UITextFields, и это решило это для меня, спасибо! – thomh

+0

Не работает в 'func searchBarCancelButtonClicked (searchBar: UISearchBar)' protocol – jose920405

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]; 
}