【发布时间】:2011-05-10 13:55:49
【问题描述】:
我正在使用 UISearchBar(但不是通常结合使用的 SearchDisplayController),我想在您点击“X”按钮时关闭键盘。
我已经关注TomSwift's suggestion,当点击“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;
}
}
}
然后我有我的类设置来实现 UISearchBarDelegate 和 UITextFieldDelegate。
让该类充当文本字段委托让我可以得到这个调用:
- (BOOL)textFieldShouldClear:(UITextField *)textField
{
[textField resignFirstResponder];
[self.searchBar resignFirstResponder];
return YES;
}
我已经尝试了我能想到的一切。我要尝试的最后一件事是找到一种方法来发出 UISearchDelegate 将在我的 Controller 类上调用的“searchBarCancelButtonClicked”,但我不确定如何做到这一点,因为 UISearchBar 似乎没有任何直接的方法来用这个名字调用。
【问题讨论】:
-
您能简要解释一下您是如何让 TomSwift 的建议发挥作用的吗?我无法让它在我的实现中工作。
-
修改了问题以显示我让该类充当 TextField 委托。
标签: iphone uitextfield uisearchbar