Отключение клавиатуры из UISearchBar при нажатии кнопки X

Я использую 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, похоже, не имеет прямых методов для вызывать с этим именем.

18
задан Community 23 May 2017 в 12:17
поделиться