Закрыть клавиатуру при касании за пределами UITextField

Я разрабатываю приложение для iPad с большим количеством UIViewControllers,UITableViews(с ячейками с accessoryViewsизUITextFields)и т. д. и т. д. Многие из UIViewControllersпоявляются в навигационной иерархии.

Есть много разных мест, где появляется UITextFields, в том числе какUITableViewCellaccessoryViews.

Я хотел бы разработать эффективную стратегию для закрытия клавиатуры всякий раз, когда пользователь касается вне редактируемого в данный момент UITextField. Я искал методы отключения клавиатуры, но еще не нашел ответа, объясняющего, как может работать общая стратегия отключения клавиатуры.

Например, мне нравится такой подход, когда в любой ViewController добавляется следующий код:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    NSLog(@"* * * * * * * * *ViewControllerBase touchesBegan");

    [self.view endEditing:YES]; // dismiss the keyboard

    [super touchesBegan:touches withEvent:event];
}

... но этот метод не работает с ситуациями, когда, например, прикосновение происходит внутри UITableView, которое отображается на дисплее. Итак, мне нужно добавить некоторый код для вызова endEditingпри касании UITableViewи т. д. и т. д.Это означает, что мое приложение будет обильно обсыпано большим количеством кода, чтобы скрывать клавиатуру при прикосновении к различным другим UIElements.

Думаю, я мог бы просто попытаться определить все различные места, где необходимо перехватывать касания и отключать клавиатуру, но мне кажется, что где-то может быть лучший шаблон проектирования для обработки событий отключения клавиатуры iOS.

Может ли кто-нибудь поделиться своим опытом в этом вопросе и порекомендовать конкретную технику для общей обработки отключения клавиатуры во всем приложении?

Большое спасибо

27
задан Rishil Patel 24 January 2019 в 20:56
поделиться