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