У меня есть UISearchBar, а в методе делегата я скрываю клавиатуру, когда текстовое поле очищается:
- (void)searchBar:(UISearchBar *)filterBar textDidChange:(NSString *)filterText {
NSLog(@"filter: %@", filterText);
if ([filterText length] == 0) {
NSLog(@"hiding keyboard");
[filterBar resignFirstResponder ];
Теперь, когда я использую кнопку возврата, чтобы убрать поисковый запрос, все в порядке. Клавиатура скрывается, когда поиск становится пустым. Не так, когда я нажимаю кнопку «крестик», чтобы полностью очистить поле поиска.
Что ж, не совсем так. Я вызываю resignFirstResponder и скрываю клавиатуру - вы просто не можете ее видеть, потому что она сразу возвращается. Я выяснил это, наблюдая за событиями отображения / скрытия клавиатуры.
Так почему же клавиатура снова отображается? Как я могу предотвратить это?
Я уже пробовал пройтись по всем подпредставлениям UISearchBar, а также вызвать для них resignFirstResponder ... но если я не сделал что-то не так, это тоже не решает эту проблему.
Обновление:
На самом деле я получил клавиатуру, чтобы не отключать кнопку "Готово" :-D ... так что я "перестану" идти по этой дороге, как предложил Кевин. Тем не менее, я хотел бы знать, почему клавиатура вернулась именно так.