Изменим кнопку Return в текстовом поле.
Установим делегат для нашего текстового поля.
Теперь запрограммируем кнопку 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]; }
Итоги: