Я использую 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;
}
}
}
Затем у меня есть моя настройка класса для реализации как UISearchBarDelegate, так и UITextFieldDelegate.
Наличие класса в качестве делегата текстового поля позволяет мне получить этот вызов:
- (BOOL)textFieldShouldClear:(UITextField *)textField
{
[textField resignFirstResponder];
[self.searchBar resignFirstResponder];
return YES;
}
Я пробовал все, что мог придумать. Последнее, что я пытаюсь найти способ вывести "searchBarCancelButtonClicked", который UISearchDelegate будет вызывать в моем классе Controller, но не уверен, как я мог это сделать, поскольку UISearchBar, похоже, не имеет прямых методов для вызывается с этим именем.