代码创建的搜索栏中,当搜索按钮被点击时隐藏键盘

6
我使用下面的代码创建了一个“搜索栏”:
 UISearchBar *Search = [[UISearchBar alloc]initWithFrame:CGRectMake(150, 0,170 , 50)];
[SearchView addSubview:Search];

但是,当我点击搜索按钮时,键盘并没有隐藏。我已经尝试了很多方法,比如searchBarTextDidEndEditingsearchBarSearchButtonClicked。也许原因是我的搜索栏没有连接。我还在我的.h类中使用了UISearchBarDelegate委托,在.m的unload方法中也使用了它。
Search.delegate = Self;

有人能否建议我如何将我通过代码创建的搜索栏附加到我的视图控制器上,以便其正常工作?
6个回答

12

首先,您需要设置searchBardelegate,然后您应该使用UISearchBar的以下delegate方法,例如:

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

}

6
Use the `resignFirstResponder`

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

//hide keyboard on searchBarTextDidEndEditing

    - (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar
{

 //hide keyboard

    [candySearchBar resignFirstResponder];

}

1
请在ViewDidLoad方法中尝试设置UISearchBar的代理,如下所示:
yourSearchBar.delegate = self;

1

我实现了以下代码作为- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar

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

不要忘记在接口(.h)文件中添加UISearchBarDelegate。继续... :)

我尝试过这个方法,但它没有被调用。我使用日志进行了检查,你能告诉我如何委托我的搜索栏吗? - Guri

0
您可以使用以下委托函数:
 - (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar

当用户按下搜索按钮时会调用此函数。您可以随意关闭键盘并在那里进行任何操作。


这个方法没有在搜索按钮被点击时被调用,你能否建议一下为什么它没有被调用? - Guri
你的搜索栏.delegate = self; 就像Ashutosh所说的 :0) - fullmoon

0

您也可以在按钮操作方法中执行此操作。当单击搜索按钮时,请编写以下行。

(void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
{
    [self.view endEditing:YES];
}

这将会起作用。


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