Как закрыть клавиатуру в iOS-приложении

Изменим кнопку Return в текстовом поле.


Установим делегат для нашего текстового поля.

Теперь запрограммируем кнопку Return.

#import "DetailViewController.h"


@interface DetailViewController () <UITextFieldDelegate>

@property (weak, nonatomic) IBOutlet UITextField *textField;
@property (weak, nonatomic) IBOutlet UIDatePicker *datePicker;
@property (weak, nonatomic) IBOutlet UIButton *buttonSave;

@end


@implementation DetailViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    [self.buttonSave addTarget:self
                        action:@selector(save)
              forControlEvents:UIControlEventTouchUpInside];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (void)save {
    NSLog(@"save");
}

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    if ([textField isEqual:self.textField]) {
        [textField resignFirstResponder]; // свернуть текстовое поле
    }
    return YES;
}

@end

Аналогично добавим свертывание текстового поля по тапу (касанию) на бэкграунд мобильного приложения.

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    [self.buttonSave addTarget:self
                        action:@selector(save)
              forControlEvents:UIControlEventTouchUpInside];
    
    UITapGestureRecognizer *handleTap = [[UITapGestureRecognizer alloc] initWithTarget:self
        action:@selector(handleEndEditing)];
    [self.view addGestureRecognizer:handleTap];
}

- (void)handleEndEditing
{
    // свернуть текстовое поле по тапу (касанию) на бэкграунд мобильного приложения
    [self.view endEditing:YES];
    // [self.textField resignFirstResponder];
}

Итоги: