23

按下回车键或用户触摸其他地方时,UISearchBar不会关闭键盘。

我需要使用 iOS 键盘右下角的移除键盘按钮来移除键盘并调用:

- (void)searchBarTextDidEndEditing:(UISearchBar *)aSearchBar

我该如何解决?

4

5 回答 5

21
- (void)searchBarTextDidEndEditing:(UISearchBar *)aSearchBar {
    [aSearchBar resignFirstResponder];
}

您还必须为 UISearchBar 设置委托:UISearchBarDelegate

它应该工作。

这是示例代码http://developer.apple.com/library/ios/#samplecode/ToolbarSearch/Listings/ToolbarSearch_APLToolbarSearchViewController_m.html#//apple_ref/doc/uid/DTS40009461-ToolbarSearch_APLToolbarSearchViewController_m-DontLinkElementID_9

另一个选项是我们可以使用的 searchBarSearchButtonClicked。

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
{
    [searchBar resignFirstResponder];
    // You can write search code Here
}
于 2012-09-28T09:15:07.803 回答
12

在 .h 中添加UISearchBarDelegate

还将SearchBar 的对象委托设置为 self

你应该做 addUISearchBarDelegate的方法:

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

编辑:上面不起作用然后添加:

[self.view endEditing:YES];
于 2012-09-28T08:56:36.933 回答
3

单击返回按钮时,使用以下代码段关闭/隐藏键盘。

- (BOOL)searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text 
{

    if([text isEqualToString:@"\n"])
    {        
        [searchBar resignFirstResponder];
        return NO;
    }
        return YES;
}
于 2012-09-28T09:48:50.600 回答
3

对于 swift 1.2,当您单击完成时,键盘将隐藏,并且还有另一个取消功能,但使用它并不好,因为当用户单击取消时,他可能想要搜索另一个单词...

func searchBarSearchButtonClicked(searchBar: UISearchBar) {
        searchBar.resignFirstResponder()
    }
于 2015-10-26T23:58:30.033 回答
0

它会工作 -

目标 c -

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar{
    [searchBar resignFirstResponder]; 
}

斯威夫特 -

func searchBarSearchButtonClicked(searchBar: UISearchBar) {
        searchBar.resignFirstResponder()
    }
于 2016-06-29T06:40:06.070 回答