Как я могу программно принудительно выполнить поиск в UISearchBar? - программирование
Подтвердить что ты не робот

Как я могу программно принудительно выполнить поиск в UISearchBar?

Как я могу заставить UISearchBar автоматически запускать новый поиск (например, нажать кнопку "Поиск" )? Есть ли простой способ достичь этого?

4b9b3361

Ответ 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 = ""