如何以编程方式强制在UISearchBar中搜索?

问题描述 投票:19回答:7

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

objective-c ios cocoa-touch uisearchbar
7个回答
18
投票

我发现我需要将UISearchViewController设置为active,然后以编程方式更改搜索字段的值,以使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"

5
投票

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

[self.searchInputField becomeFirstResponder];

3
投票

你可以强制你的searchBar,

目标C:

[self searchBar:yourSearchBarName textDidChange: yourSearchingString];

Swift 3.0:

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

这将触发您的searchBar。


1
投票

是的,你只需要对searchBarSearchButtonClicked:上的UISearchbarDelegate进行隐式调用。有关此代表的更多信息,请查看official doc


0
投票

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

NSString * forceReload = self.searchDisplayController.searchBar.text;
self.searchDisplayController.searchBar.text = forceReload;

0
投票

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


0
投票

这工作 - 斯威夫特4

   searchBar.text="Amber"
   self.searchBar(self.searchBar, textDidChange: "Amber")

0
投票

我无法获得委托对象但是searchBar本身,这段代码可以工作。

let searchBar: UISearchBar = 
searchBar.delegate?.searchBar?(searchBar, textDidChange: "")
searchBar.text = ""
© www.soinside.com 2019 - 2024. All rights reserved.