Как я могу заставить UISearchBar автоматически запускать новый поиск (например, нажать кнопку "Поиск" )? Есть ли простой способ достичь этого?
Как я могу программно принудительно выполнить поиск в UISearchBar?
Ответ 1
Я обнаружил, что мне нужно было активировать UISearchViewController, прежде чем программно изменить значение поля поиска, чтобы UISearchViewController автоматически выполнял поиск:
// Need to set the searchDisplayController to active to
// make the changes in search text trigger a search.
self.searchDisplayController.active = YES;
self.searchDisplayController.searchBar.text = @"New search string";
Swift 4
self.searchController.isActive = true
self.searchController.searchBar.text = "New search string"
Ответ 2
Только поле ввода поиска станет первым ответчиком:
[self.searchInputField becomeFirstResponder];
Ответ 3
Вы можете заставить свой поискBar,
Цель C:
[self searchBar:yourSearchBarName textDidChange: yourSearchingString];
Swift 3.0:
self.searchBar(self.yourSearchBarName, textDidChange: yourSearchingString)
Это вызовет ваш поискBar.
Ответ 4
Да, вам нужно сделать неявный вызов searchBarSearchButtonClicked:
на UISearchbarDelegate
. Обратитесь к официальному документу для получения дополнительной информации об этом делегате.
Ответ 5
кажется глупым, но работает, поэтому он не тупой;)
NSString * forceReload = self.searchDisplayController.searchBar.text;
self.searchDisplayController.searchBar.text = forceReload;
Ответ 6
Убедившись в том, что нужный текст находится внутри панели поиска, вы можете вызвать self.searchBarSearchButtonClicked(searchBar)
(передавая строку поиска), предполагая, что вы уже реализовали этот метод UISearchBarDelegate searchBarSearchButtonClicked(_ searchBar: UISearchBar)
Ответ 7
Это сработало - Swift 4
searchBar.text="Amber"
self.searchBar(self.searchBar, textDidChange: "Amber")
Ответ 8
Я не могу получить объект делегата, но сам searchBar, этот код может работать.
let searchBar: UISearchBar =
searchBar.delegate?.searchBar?(searchBar, textDidChange: "")
searchBar.text = ""