Более элегантный способ - убрать клавиатуру, когда пользователь нажимает где-то за рамкой клавиатуры.
Сначала установите представление ViewController для класса «UIControl» в инспекторе идентичности в UIBuilder. Удерживая клавишу «Control», перетащите представление в файл заголовка ViewController и свяжите его как действие с событием «Touch Up Inside», например:
ViewController.h
-(IBAction)dismissKeyboardOnTap:(id)sender;
В основном файле ViewController ViewController.m:
-(IBAction)dismissKeyboardOnTap:(id)sender
{
[[self view] endEditing:YES];
}
Вы можете требовать двойного касания или длительного касания, используя аналогичные приемы. Возможно, вам понадобится установить ваш ViewController как UITextViewDelegate и подключить TextView к ViewController. Этот метод работает как для UITextView, так и для UITextField.
Источник: Ранчо Большого Ботаника
РЕДАКТИРОВАТЬ: Я также хотел бы добавить, что если вы используете UIScrollView, вышеупомянутая техника может работать не так легко через Interface Builder. В этом случае вы можете использовать UIGestureRecognizer и вызвать вместо него метод [[self view] endEditing: YES] внутри него. Примером может быть:
-(void)ViewDidLoad{
....
UITapGestureRecognizer *tapRec = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(tap:)];
[self.view addGestureRecognizer: tapRec];
....
}
-(void)tap:(UITapGestureRecognizer *)tapRec{
[[self view] endEditing: YES];
}
Когда пользователь нажимает за пределами клавиатуры и не нажимает пробел, клавиатура отклоняется.