Я использую UISearchBar (но не SearchDisplayController, который обычно используется вместе), и я хотел бы отключить клавиатуру, когда вы нажимаете кнопку «X».
I Я последовал предложению 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 вызовет в моем классе контроллера, но я не уверен, как я могу это сделать, поскольку UISearchBar, похоже, не имеет прямых методов для вызывать с этим именем.