在UISearchBar失去焦点时隐藏键盘

我不确定为什么这么难。 我的页面顶部有一个UISearchBar。 当用户键入该UISearchBar时,它将自动过滤搜索栏下方的UITableView中的结果。 由于我在按键时搜索,所以不需要搜索按钮。

该应用程序的流程是用户在搜索栏中键入搜索(键盘正在显示),然后将结果显示在表格视图中 - 此时键盘需要消失。

我很难让键盘消失。

我知道我需要这样做:

    [searchBar resignFirstResponder];

让键盘消失,但我找不到需要执行此操作的代理。 我想在用户触摸表视图时立即执行此操作。

有任何想法吗?


尝试这个:

- (void)viewWillDisappear:(BOOL)animated {

    [super viewWillDisappear:animated];

    [searchBar resignFirstResponder];

}

它为我工作


我认为做到这一点最简单(也是最好)的方法是对全局视图进行子类化,并使用hitTest:withEvent方法来侦听任何触摸。 在键盘上触摸没有注册,所以hitTest:withEvent只有当你触摸/滚动/刷卡/捏...在其他地方,然后调用[self endEditing:YES]时才会调用。

这比使用touchesBegan更好,因为如果点击视图顶部的按钮,touchesBegan不会被调用。 它也比使用昏暗的屏幕更好,因为在一个复杂而动态的用户界面中,你无法将昏暗的屏幕放在每个地方。 此外,它比调用[searchBar resignFirstResponder]更好,因为你可能在屏幕上有很多文本字段,所以这对所有的人都适用。


你可能想把它当做Cydia(越狱打包UI)来做 - 它有一个搜索按钮,当你按下搜索按钮时,它会关闭键盘。 输入预览时,结果仍然会被过滤。

链接地址: http://www.djcxy.com/p/44267.html

上一篇: Hide keyboard when losing focus off UISearchBar

下一篇: Drag UIView containg UIScrollView