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

时间:2012-09-16 14:13:39

标签: objective-c ios cocoa-touch uisearchbar

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

8 个答案:

答案 0 :(得分:17)

我发现我需要将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";

Swift 4

self.searchController.isActive = true
self.searchController.searchBar.text = "New search string"

答案 1 :(得分:5)

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

[self.searchInputField becomeFirstResponder];

答案 2 :(得分:2)

您可以强制使用searchBar,

目标C:

[self searchBar:yourSearchBarName textDidChange: yourSearchingString];

Swift 3.0:

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

这将触发您的searchBar。

答案 3 :(得分:1)

是的,您只需要对searchBarSearchButtonClicked:上的UISearchbarDelegate进行隐式调用。有关此委托的详细信息,请查看official doc

答案 4 :(得分:0)

似乎很愚蠢,但是有效,所以它并不愚蠢;)

def get_middle(arr):
    n = arr.shape[0] / 2.0
    n_int = int(n)
    if n % 2 == 1:
        return arr[[n_int], [n_int]]
    else:
        return arr[n_int:n_int + 2, n_int:n_int + 2]

答案 5 :(得分:0)

在确定您想要的文本位于搜索栏内后,您可以调用self.searchBarSearchButtonClicked(searchBar)(传入搜索栏),假设您已经实现了此UISearchBarDelegate方法searchBarSearchButtonClicked(_ searchBar: UISearchBar)

答案 6 :(得分:0)

这有效-Swift 4

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

答案 7 :(得分:0)

我无法获取委托对象,但searchBar本身可以运行此代码。

let searchBar: UISearchBar = 
searchBar.delegate?.searchBar?(searchBar, textDidChange: "")
searchBar.text = ""