在UISearchBar中单击隐藏键盘,而不是退格以清空文本

时间:2015-12-27 04:48:04

标签: ios objective-c uisearchbar

我似乎无法通过退格手动清除UISearchBar找到这个答案,只需点击取消按钮。单击清除按钮时,下面的代码会隐藏键盘,但是退格到空UISearchBar也是如此。我想在这种情况下让键盘保持打开状态,因为有人可能正在输入其他内容。

-(void)searchBar:(UISearchBar*)searchBar textDidChange:(NSString*)text
{
    [self filterData: text];

    if(text.length == 0)
    {
        [searchBar performSelector:@selector(resignFirstResponder) withObject:nil afterDelay:.1];
    }
}

3 个答案:

答案 0 :(得分:0)

您的代码包含if(text.length == 0),这意味着当输入的大小变为零时,键盘将被解除。但实际的部分应如下:

- (BOOL) searchBarCancelButtonClicked:(UISearchBar *)searchBar{
    [searchBar resignFirstResponder];
    return YES;
}

答案 1 :(得分:0)

我最好尝试这样的问题就是按照这里的建议去做但是当你点击清除按钮时它不起作用:(但我认为它可能对你有所帮助: https://stackoverflow.com/a/16957073/1465756

在整个视图中添加点按手势:

  - (void) dismissKeyboard
{
  [self.searchBar resignFirstResponder];
}
点击视图时

和dismissKeyboard:

*

答案 2 :(得分:-1)

我知道您想要在用户点击取消时关闭键盘,并且您还希望在用户点击清除(x)按钮时关闭。

您无需实施searchBar:textDidChange:

要检测取消,请执行searchBarCancelButtonClicked:。在这里,您可以触发resignFirstResponder

要检测清除,请采用UITextFieldDelegate并实施textFieldShouldClear:。这将在用户点击清除之后但在清除发生之前调用。返回YES以允许清除发生。您可以在返回前关闭键盘。