Я разрабатываю приложение для iPad с большим количеством UIViewControllers
,UITableViews
(с ячейками с accessoryViews
изUITextFields
)и т. д. и т. д. Многие из UIViewControllers
появляются в навигационной иерархии.
Есть много разных мест, где появляется UITextFields
, в том числе какUITableViewCell
accessoryViews
.
Я хотел бы разработать эффективную стратегию для закрытия клавиатуры всякий раз, когда пользователь касается вне редактируемого в данный момент 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.
Может ли кто-нибудь поделиться своим опытом в этом вопросе и порекомендовать конкретную технику для общей обработки отключения клавиатуры во всем приложении?
Большое спасибо