iPhone SDK: UISearchBar: searchBarTextDidEndEditing не срабатывает

Я реализую панель поиска на своем столе, которая должна быть довольно простой. У меня есть это:

- (void)searchBarTextDidBeginEditing:(UISearchBar *)theSearchBar { 
 NSLog(@"searchBarTextDidBeginEditing");
}

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {    
    NSLog(@"The search text is: %@", searchText);
}

- (void)searchBarTextDidEndEditing:(UISearchBar *)theSearchBar {
    NSLog(@"searchBarTextDidEndEditing");
    [theSearchBar resignFirstResponder];
}

И searchBarTextDidBeginEditing срабатывает, и я получаю это сообщение в своем журнале, но когда я нажимаю за пределами панели поиска над клавиатурой, я не получаю событие searchBarTextDidEndEditing, поэтому я не могу заставить клавиатуру исчезнуть — сообщение даже не исчезает. появляются в журнале.

TextDidChange работает, так что просто searchBarTextDidBeginEditing не работает.

Любые идеи? Спасибо!!


person Nick    schedule 29.07.2010    source источник
comment
Курсор исчезает, когда вы нажимаете снаружи? Возможно, вам придется отключить первый ответчик самостоятельно.   -  person jtbandes    schedule 29.07.2010
comment
Не проходит - продолжает. Есть ли другой способ обнаружить касание за пределами панели поиска, кроме создания невидимой кнопки или чего-то в этом роде?   -  person Nick    schedule 29.07.2010
comment
Вы можете попытаться сделать это в своем контроллере представления/представления или вы можете создать подкласс UIApplication для перехвата событий.   -  person jtbandes    schedule 29.07.2010


Ответы (3)


Даже я столкнулся с той же проблемой.

Пожалуйста, найдите решение ниже

Реализовать следующие методы

1.searchBarTextDidEndEditing
2.SearchBarSearchButtonClicked

и убедитесь, что вы [UISearchchbar resignfirstresponder] во втором методе, упомянутом выше

person Namburi.Rajesh    schedule 01.02.2011
comment
Это не имеет особого смысла, в UISearchBar нет класса/статического метода с именем resignFirstResponder. Я предполагаю, что вы имеете в виду назвать это экземпляром. - person Dimitris; 06.05.2016

Однажды я внедрил searchBarSearchButtonClicked, который решил эту проблему за меня.

person Pickles    schedule 28.03.2011

Метод

  • (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar

вызывается только при вызове [searchBar resignFirstResponder].

Лучше всего вызывать [searchBar resignFirstResponder] в методе

  • (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar

В быстром:

  • (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar;
  • (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar;
person Stefanos Christodoulides    schedule 14.05.2019
comment
как это переводится в Swift 4.2? - person marcopiii; 06.08.2019