当点击UISearchBar的“搜索”按钮时,如何关闭键盘?

27

我已经使用UISearch bar实现了搜索功能,但是当我按下键盘上的“搜索”按钮时,什么也没有发生。我该如何在保持搜索结果的同时让键盘在按下“搜索”按钮时隐藏,并保留搜索栏中的文本?

2个回答

56

来自 iOS文本、Web和编辑编程指南:

要隐藏键盘,您需要调用当前作为第一响应者的基于文本的视图的 resignFirstResponder 方法。

因此,在您的 UISearchBarDelegate 中,您应该这样做:

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
{
    [searchBar resignFirstResponder];
    // Do the search...
}

6
对我来说,这只部分有效,因为如果我取消第一响应者,取消按钮就会被禁用……它不能保持启用状态以接收触摸。 - Christian Gossain
UISearchBar的取消按钮存在的目的是为了提供一种方法让iPhone用户关闭键盘,因为iPhone键盘没有关闭按钮。如果您需要取消按钮来执行其他操作,由于UISearchBar无法完全访问该控件,您必须自己实现它。 - rob mayoff
1
我收到了这个错误信息,致命错误:数组索引超出范围。 - Nurdin

5

Swift 4
确保您的UIViewController中定义了UISearchBarDelegate

func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
    searchBar.resignFirstResponder()
}


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接