Касание фона, чтобы закрыть клавиатуру
Перейдите в Xcode, если вы еще не там. Нам нужно добавить еще одно действие в наш класс контроллера. Добавьте следующую строку в ваш файл Control_FunViewController.h:
#import <UIKit/UIKit.h>
@interface Control_FunViewController : UIViewController {
UITextField *nameField;
UITextField *numberField;
}
@property (nonatomic, retain) IBOutlet UITextField *nameField; ]
@property (nonatomic, retain) IBOutlet UITextField *numberField;
- (IBAction)textFieldDoneEditing:(id)sender;
- (IBAction)backgroundTap:(id)sender;
@end
Сохранить файл заголовка; переключитесь на файл реализации и добавьте этот код, который просто сообщает обоим текстовым полям для получения статуса первого респондента, если он у него есть. Совершенно безопасно вызывать resignFirstResponder для элемента управления, который не является первым респондентом, поэтому мы можем безопасно вызывать его в обоих текстовых полях, не проверяя, является ли один из них первым респондентом.
- (IBAction)backgroundTap:(id)sender {
[nameField resignFirstResponder];
[numberField resignFirstResponder];
}
TIP
Сохраните этот файл и вернитесь в Интерфейсный Разработчик. Теперь нам нужно изменить базовый класс представления нашего пера. Если вы посмотрите в главное окно пера, вы увидите, что в этом представлении есть три значка. Третий, называемый View, является основным представлением нашего пера, в котором все остальные элементы управления и представления находятся в качестве подпредставлений.
Нажмите один раз на иконку View, которая представляет вид контейнера нашего пера. Нажмите ␣4, чтобы вызвать инспектора идентификации. Здесь мы можем изменить базовый класс любого экземпляра объекта в Интерфейсном Разработчике.
Вы будете часто переключаться между заголовочными файлами и файлами реализации. К счастью, в Xcode есть комбинация клавиш, которая быстро переключает вас между этими файлами. Комбинация клавиш по умолчанию - ␣␣␣ (стрелка опции-команды-вверх), хотя вы можете изменить ее на что угодно, используя предпочтения Xcode.76
В поле с надписью Class в настоящее время указано UIView. Измените это, чтобы прочитать UIControl. Все элементы управления, которые способны запускать методы действия, являются подклассами UIControl, поэтому, изменив базовый класс, мы только что дали этому представлению возможность вызывать методы действия. Вы можете проверить это, нажав ␣2, чтобы вызвать инспектор соединений.
Перетащите из события Touch Down на значок «Владелец файла» и выберите действие backgroundTap: . Теперь касания в любом месте представления без активного элемента управления вызовут наш новый метод действия, который заставит клавиатуру убираться.
Примечание
Сохраните перо, и давайте вернемся и попробуем. Скомпилируйте и снова запустите ваше приложение. На этот раз клавиатура должна исчезнуть не только при нажатии кнопки «Готово», но и при щелчке в любом месте, не являющемся активным элементом управления, чего и ожидает пользователь.