Ios 在UISearchBar中单击“清除”时隐藏键盘,而不是退格到空文本
我似乎找不到这个答案,手动清除UISearchBar与退格,只有一个取消按钮点击。单击“清除”按钮时,下面的代码会隐藏键盘,但返回到空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)
-(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中单击,而不是退格为空文本