Компоненты использующие клавиатуру


Компоненты использующие клавиатуру

Компоненты, использующие клавиатуру, вызывают ее на экран.

Когда пользователь щелкает в текстовом поле, iOS передает элементу фокус и назначает его «первым ответчиком» для последующих событий. Компонент может получить фокус по разным причинам: пользователь выделяет элемент, или представление настроено так, что при нажатии кнопки Return фокус переходит к следующему элементу для заполнения, или приложение напрямую назначает некоторый элемент первым ответчиком вследствие некоторого события и т. д. Однако действия, выполняемые компонентом при назначении первым ответчиком, зависят от самого компонента: в частности, элемент UITextField обращается к iOS с запросом на отображение клавиатуры. Взаимодействия между приложением и компонентами играют важную роль при написании приложений, и все они реализуются посредством передачи сообщений.

Идея проста: когда один объект (будь то объект ApplicationDelegate вашего приложения, другой компонент или GPS в iPhone) хочет, чтобы другой объект выполнил какую-либо операцию, он отправляет последнему сообщение.

В Objective-C вы отправляете сообщения объектам, а они отвечают на сообщения (как правило, возвратом некоторого значения из метода).

Исполнительная среда Objective-C преобразует сообщения в вызовы методов объектов или классов (для статических методов), но вам лучше думать о них именно как о сообщениях; в документации Apple постоянно встречаются выражения типа «получатель этого сообщения делает то-то.» Давайте воспользуемся механизмом передачи сообщений, чтобы убрать клавиатуру с экрана после завершения ввода.

Запрос к UlTextField на передачу фокуса

Чтобы клавиатура исчезла с экрана, необходимо сообщить текстовому полю, что пользователь завершил работу с ним. Для этого мы отправляем UlTextField сообщение с приказом отказаться от роли первого ответчика.

Отправить сообщение в Objective-C несложно: вы указываете получателя, отправляемое сообщение и аргументы, передаваемые с сообщением.
Да! Наш контроллер представления отвечает на определенный набор сообщений (таких, как sendButtonTapped и viewDidLoad).

Когда пользователь нажимает кнопку Done на клавиатуре, текстовое поле отправляет сообщение. Остается указать, что это сообщение представляет интерес для нашего класса контроллера представления и контроллер желает обрабатывать его.

И представление использует этот способ для передачи информации контроллеру?

Сообщения можно отправлять объекту nil.

Objective-C позволяет отправлять сообщения объектам nil. Если вы привыкли к исключениям NullPointerException в других языках, это обстоятельство способно основательно усложнить отладку. Будьте внимательны с неинициализированными переменными и nil во время отладки!

Мы начали заниматься обработкой сообщений в главе 1, но практически не рассматривали синтаксис, обеспечивающий ее работу. Объявления методов размещаются в заголовочных файлах, а реализация — в файлах .т. Перед вами несколько фрагментов реализации sendButtonTapped из приложения InstaEmail.
  • Дата: 4-12-2014, 22:43

Предыдущие статьи сайта:

Понравилась статья? Ставь лайки, рассказывай друзьям!



Отзывы о статье: Компоненты использующие клавиатуру

Технологии, секреты и фишки Apple: Iphone, iPad, iPod