Я думаю, что самый простой (и лучший) способ сделать это - создать подкласс вашего глобального представления и использовать метод hitTest:withEvent
для прослушивания любого прикосновения. Касания на клавиатуре не зарегистрированы, поэтому hitTest: withEvent вызывается только тогда, когда вы касаетесь / прокручиваете / проводите / зажимаете ... где-то еще, затем вызываете [self endEditing:YES]
.
Это лучше, чем использовать touchesBegan
, потому что touchesBegan
не вызывается, если вы нажмете кнопку в верхней части представления. Это лучше, чем UITapGestureRecognizer
, который, например, не может распознать жест прокрутки. Это также лучше, чем использование тусклого экрана, потому что в сложном и динамичном пользовательском интерфейсе нельзя ставить тусклый экран везде. Более того, он не блокирует другие действия, вам не нужно дважды нажимать, чтобы выбрать кнопку снаружи (как в случае UIPopover
).
Кроме того, это лучше, чем вызывать [textField resignFirstResponder]
, потому что у вас может быть много текстовых полей на экране, так что это работает для всех них.