Більш елегантний спосіб - відхилити клавіатуру, коли користувач натискає десь поза рамкою клавіатури.
Спочатку встановіть подання ViewController на клас "UIControl" у інспектора ідентичності UIBuilder. Контрольно перетягніть подання у файл заголовка 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.
Джерело: Ranch Big Nerd
EDIT: Я також хотів би додати, що якщо ви використовуєте UIScrollView, вищезазначена методика може не працювати так легко через 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];
}
Якщо користувач натисне за межі клавіатури і не натисне простір для введення, клавіатура буде відхилена.