Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在UISearchBar中单击“清除”时隐藏键盘,而不是退格到空文本_Ios_Objective C_Uisearchbar - Fatal编程技术网

Ios 在UISearchBar中单击“清除”时隐藏键盘,而不是退格到空文本

Ios 在UISearchBar中单击“清除”时隐藏键盘,而不是退格到空文本,ios,objective-c,uisearchbar,Ios,Objective C,Uisearchbar,我似乎找不到这个答案,手动清除UISearchBar与退格,只有一个取消按钮点击。单击“清除”按钮时,下面的代码会隐藏键盘,但返回到空UISearchBar时也会隐藏键盘。在这种情况下,我想让键盘保持打开状态,因为可能有人在键入其他内容 -(void)searchBar:(UISearchBar*)searchBar textDidChange:(NSString*)text { [self filterData: text]; if(text.length == 0)

我似乎找不到这个答案,手动清除UISearchBar与退格,只有一个取消按钮点击。单击“清除”按钮时,下面的代码会隐藏键盘,但返回到空UISearchBar时也会隐藏键盘。在这种情况下,我想让键盘保持打开状态,因为可能有人在键入其他内容

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

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

您的代码包括
if(text.length==0)
,这意味着当输入的大小变为零时,键盘将被关闭。但是,实际工件应如下所示:

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

我知道当用户点击“取消”时,您希望关闭键盘,当用户点击“清除”(x)按钮时,您也希望关闭键盘

您不需要实现
搜索栏:textDidChange:

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


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

我对此类问题的最佳尝试是按照此处的建议进行操作,但当您单击“清除”按钮时,它不起作用:(但我认为它可能会对您有所帮助:

在整个视图上添加轻触手势:

 - (void)viewDidLoad
{
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]
                               initWithTarget:self
                               action:@selector(dismissKeyboard)];

[self.view addGestureRecognizer:tap];
}
并在点击视图时关闭键盘:

  - (void) dismissKeyboard
{
  [self.searchBar resignFirstResponder];
}

“清除”与“取消按钮”不同,但请考虑一个用户试图重新输入数据的场景,它将放弃响应者。对吗?这就是为什么我要问这个问题。这是您正在寻找的吗?取消只与取消按钮一起工作,这是清除按钮,它们完全不同。您的问题不是。与“取消”按钮相关吗?当他们点击“清除”按钮时,您想辞职吗?请更新您的问题-您只提到“取消”按钮“不清除”。“清除时隐藏键盘”在UISearchBar中单击,而不是退格为空文本