Метод делегата searchBarCancelButtonClicked не вызывается. Есть ли способ позвонить? - PullRequest
23 голосов
/ 06 декабря 2010

UIViewController для реализации представления для размещения UITableView UISearchBar и реализации.Но вы не можете вызвать searchBarCancelButtonClicked.Не знаю в чем причина.

Ответы [ 10 ]

7 голосов
/ 19 января 2016

Причина, по которой searchBarCancelButtonClicked не запускается, может заключаться в том, что ваш UISearchBar не показывает кнопку Отмена. Вы можете отобразить кнопку Отмена следующим образом:

searchBar.showsCancelButton = true

У меня была та же проблема, и показ кнопки «Отмена» вызвал срабатывание searchBarCancelButtonClicked, как и ожидалось.

6 голосов
/ 06 декабря 2010

Убедитесь, что ваш UIViewController установлен в качестве делегата вашего UISearchBar, и что он принимает протокол UISearchBarDelegate.

5 голосов
/ 24 марта 2011
- (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];
    }
}

Надеюсь, это поможет.

1 голос
/ 29 июня 2016

В моем случае был неконтролируемый userInteractionEnabled = NO

0 голосов
/ 22 апреля 2019

Свифт 4,2

У меня была та же проблема, и я должен был установить для свойства definePresentationContext значение true, прежде чем метод searchBarCancelButtonClicked заработал.

 definesPresentationContext = true
0 голосов
/ 19 марта 2019

Попробуйте поставить это в viewDidLoad. В моем случае иногда действие кнопки «Отмена» делегат «searchBarCancelButtonClicked» сработал, а иногда и не сработал (просто клавиша отклонена, а кнопка отмены стала неактивной), после добавления этого все стало работать как ожидалось.

UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).isEnabled = true
0 голосов
/ 05 марта 2019

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

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
        if searchText.isEmpty {
            searchRecords.removeAll()
            searchTableView.reloadData()
        }
    }
0 голосов
/ 12 сентября 2018

Эта строка удаляет прозрачный вид UISearchController

let searchController = UISearchController(searchResultsController: nil)
searchController.dimsBackgroundDuringPresentation = false
0 голосов
/ 03 июля 2018

searchController.searchBar.delegate = self, а не просто searchController.delegate = self

0 голосов
/ 17 августа 2012

Я столкнулся с той же проблемой, когда у меня был UISearchBar внутри UIScrollView.Как я понимаю, вопрос у вас был внутри UITableView, который является подклассом UIScrollView.

В моем случае мне помогла установка

tableView.delaysContentTouches = NO;

Кажется, метод searchBarCancelButtonClickedхорошо работать с этим параметром YES, который является настройкой по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...