Главная » iPhone, Objective-C, Программирование для iOS и MacOS » Добавление новых задач iTahDoodle

0
 

Создавая экземпляр UIButton в application:didFinishLaunchingWithOptions, мы задали для него пару «приемник/действие»:

[insertButton addTarget:self

action:@selector(addTask:) forControlEvents:UIControlEventTouchUpInside];

Приемником является  self, а  действием  – addTask:.  Таким  образом, кнопка Insert отправляет BNRAppDelegate сообщение addTask:. Следовательно, мы должны реализовать метод addTask: в BNRAppDelegate.m.

-­‐       (void)addTask:(id)sender

{

// получение задачи

NSString *t = [taskField text];

// выход, если поле taskField пусто if ([t isEqualToString:@""]) {

return; }

// включение задачи в рабочий массив [tasks addObject:t];

// обновление таблицы, чтобы в ней отоброжался новый элемент [taskTable reloadData];

// очистка текстового поля [taskField setText:@""];

// клавиатура убирается с экрана [taskField resignFirstResponder];

}

А что это за вызов resignFirstResponder? В двух словах дело обстоит так.

Некоторые объекты представлений также являются элементами управления – представлениями, с которыми пользователь может взаимодействовать. Кнопки, текстовые поля, ползунки – все это при меры элементов управления. Когда на экране находятся элементы, один из них может обладать особым статусом первого обработчика, который означает, что элемент реагирует на ввод текста с клавиатуры или другие действия (скажем, встряхивание устройства для отмены операции).

Когда пользователь нажимает элемент управления, который может получать статус первого обработчика, этому элементу отправляется сообщение rеsignFirstResponder. До того, как другой элемент станет первым обработчиком или текущему элементу будет отправлено сообщение resignFirstResponder, этот элемент будет сохранять указанный статус и получать ввод с клавиатуры и встряхивания устройства.

Когда элемент ввода текста (например, текстовое поле) становится первым

обработчиком, на экране появляется клавиатура. Пока текущим первым ответчиком остается элемент, получающий текстовый ввод, клавиатура остается на экране. В конце addTask: мы приказываем текстовому полю отказаться от статуса первого обработчика, в результате чего клавиатура исчезает с экрана.

Постройте и запустите приложение. Теперь вы можете вводить новые задачи!

Источник: Аарон Хилегас, «Objective-C. Программирование для iOS и MacOS», 2012 г.

По теме:

  • Комментарии