我正在使用UISearchBar(但不是通常联合使用的SearchDisplayController),当你点击'X'按钮时我想解除键盘.
我遵循了TomSwift的建议,当'X'被敲击并且效果很好时被叫.但是,从文本字段中退出第一个响应者并在UISearchBar实例中调用它们resignFirstResponder都不会使键盘消失.
当用户轻敲X按钮时,有没有办法摆脱键盘?
这是我为了获得'清除'通知而做的事情:
- (void)viewDidLoad:
{
for (UIView* v in searchBar.subviews)
{
if ( [v isKindOfClass: [UITextField class]] )
{
UITextField *tf = (UITextField *)v;
tf.delegate = self;
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后我有我的类设置来实现UISearchBarDelegate和UITextFieldDelegate.
将该类作为文本字段委托允许我接听此调用:
- (BOOL)textFieldShouldClear:(UITextField *)textField
{
[textField resignFirstResponder];
[self.searchBar resignFirstResponder];
return YES;
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试了所有我能想到的东西.我正在尝试的最后一件事是找到一种方法来发出UISearchDelegate将在我的Controller类上调用的'searchBarCancelButtonClicked',但不是我确定我怎么能这样做,因为UISearchBar似乎没有任何直接方法使用此名称调用.