24

如何强制 UISearchBar 自动开始新搜索(如按下搜索按钮)?有没有简单的方法来实现这一目标?

4

9 回答 9

23

我发现在以编程方式更改搜索字段的值之前,我需要将 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";

斯威夫特 4

self.searchController.isActive = true
self.searchController.searchBar.text = "New search string"
于 2014-06-17T11:26:25.163 回答
6

只需让搜索输入字段成为第一响应者:

[self.searchInputField becomeFirstResponder];
于 2012-09-16T15:02:40.840 回答
4

你可以强制你的搜索栏,

目标 C:

[self searchBar:yourSearchBarName textDidChange: yourSearchingString];

斯威夫特 3.0:

self.searchBar(self.yourSearchBarName, textDidChange: yourSearchingString)

这将触发您的 searchBar。

于 2017-08-05T07:43:53.307 回答
2

在确保您想要的文本在您的搜索栏中之后,您可以调用self.searchBarSearchButtonClicked(searchBar)(在您的搜索栏中传递)假设您已经实现了这个 UISearchBarDelegate 方法searchBarSearchButtonClicked(_ searchBar: UISearchBar)

于 2018-05-04T11:49:04.577 回答
2
let searchBar: UISearchBar = /* The Searchbar */
searchBar.delegate?.searchBar?(searchBar, textDidChange: "")
searchBar.text = ""
于 2019-07-23T07:56:40.967 回答
1

searchBarSearchButtonClicked:是的,您只需要隐式调用UISearchbarDelegate. 查看官方文档以获取有关此代表的更多信息。

于 2012-09-16T14:30:08.510 回答
0

斯威夫特 5

如果你只有一个 UISearchBar(不是 UISearchViewController):

let searchBar: UISearchBar
searchBar.text = "foo" // Reset the search text
searchBar.becomeFirstResponder() // Select the field and bring up the keyboard
于 2022-01-27T20:26:39.403 回答
0

看起来很愚蠢,但很有效,所以它并不愚蠢;)

NSString * forceReload = self.searchDisplayController.searchBar.text;
self.searchDisplayController.searchBar.text = forceReload;
于 2016-03-30T20:22:57.417 回答
-1

这行得通 - 斯威夫特 4

   searchBar.text="Amber"
   self.searchBar(self.searchBar, textDidChange: "Amber")
于 2019-06-16T17:52:33.183 回答