UIViewController для реализации представления для размещения UITableView UISearchBar и его реализации. Но вы не можете вызвать searchBarCancelButtonClicked. Не знаю, в чем причина.
SearchBarCancelButtonClicked метод делегата не вызывается. Есть ли способ позвонить?
Ответ 1
Убедитесь, что ваш UIViewController установлен как делегат вашего UISearchBar и что он использует протокол UISearchBarDelegate.
Ответ 2
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
// This method has been called when u enter some text on search or Cancel the search.
// so make some condition for example:
if([searchText isEqualToString:@""] || searchText==nil) {
// Nothing to search, empty result.
searching = NO;
[mytableView reloadData];
}
}
Надеюсь, что это поможет.
Ответ 3
Причина, по которой searchBarCancelButtonClicked не срабатывает, может быть вызвана тем, что ваш UISearchBar не показывает кнопку "Отмена" . Вы можете отобразить кнопку "Отмена" следующим образом:
searchBar.showsCancelButton = true
У меня была та же проблема, и при нажатии кнопки "Отмена" сделана searchBarCancelButtonClicked fire, как ожидалось.
Ответ 4
В моем случае был неконтролируемый userInteractionEnabled = NO
Ответ 5
Я столкнулся с той же проблемой, когда у меня был UISearchBar внутри UIScrollView. Насколько я понимаю, вопрос был у вас внутри UITableView, который является подклассом UIScrollView.
Что помогло в моем случае установить
tableView.delaysContentTouches = NO;
Кажется, что метод searchBarCancelButtonClicked
не работает с этим набором YES
, который является настройкой по умолчанию.