Нужно слушать уведомления, поступающие от клавиатуры, и перемещать компоненты пользовательского интерфейса вверх или вниз либо полностью перегруппировывать их так, чтобы пользователь мог видеть нужную ему часть графического интерфейса, даже если клавиатура и занимает половину экрана. Сами уведомления, посылаемые клавиатурой, подробнее рассматриваются в подразделе «Обсуждение» данного раздела.
У устройств, работающих с операционной системой iOS, нет физической клавиатуры. Но у них есть виртуальная клавиатура, всплывающая на экране всякий раз, когда пользователь должен ввести текст в какое-нибудь текстовое поле (UITextField, см. раздел 1.19) или текстовый вид (UITextView, см. раздел 1.20). На iPad пользователь даже может делить клавиатуру на части и перемещать их вверх и вниз. Есть несколько пограничных случаев, о которых, вам, возможно, придется позаботиться при проектировании пользовательского интерфейса. Можете обратиться к помощи дизайнеров пользовательских интерфейсов (если в вашей компании есть такие специалисты) и рассказать им, что на iPad пользователь может делить клавиатуру на части. Перед тем как приступать к творческой работе, они должны об этом узнать. В этом разделе мы коснемся подобного пограничного случая.
Сначала рассмотрим, как выглядит клавиатура в iPhone. Виртуальная клавиатура может отображаться в книжной или альбомной ориентации. В книжной ориентации клавиатура iPhone выглядит так, как на рис. 15.1.
Рис. 15.1.Клавиатура на iPhone, книжная ориентация
А клавиатура в альбомной ориентации на iPhone будет выглядеть так, как на рис. 15.2.
Рис. 15.2.Клавиатура в iPhone, альбомная ориентация
Но на iPad клавиатура выглядит немного иначе. Самое очевидное отличие заключается в том, что эта клавиатура гораздо крупнее, чем на iPhone, поскольку сам экран у iPad шире. При альбомной ориентации клавиатура iPad значительно шире, но на ней содержится тот же набор клавиш, что и при книжной ориентации. Кроме того, пользователь может при желании «разбирать» клавиатуру iPad на части. Благодаря этому он лучше контролирует функционирование клавиатуры, зато появляются дополнительные проблемы у программистов, дизайнеров пользовательских интерфейсов и пользовательских взаимодействий.
iOS широковещательно распространяет различные уведомления, касающиеся отображения клавиатуры на экране. Вот список этих уведомлений и краткие характеристики каждого из них:
• UIKeyboardWillShowNotification — распространяется, когда клавиатура вот-вот появится на экране. Уведомление несет с собой словарь с пользовательской информацией, в котором содержатся различные данные о клавиатуре, анимации, которая будет применяться при выводе клавиатуры на экран, и другая информация;
• UIKeyboardDidShowNotification — распространяется, когда клавиатура уже появилась на экране;
• UIKeyboardWillHideNotification — распространяется, когда клавиатура вот-вот будет убрана с экрана. Уведомление несет с собой словарь с пользовательской информацией, в котором содержатся различные данные о клавиатуре, анимации, которая будет применяться при уходе клавиатуры с экрана, длительности анимации и т. д.;
• UIKeyboardDidHideNotification — распространяется после того, как клавиатура полностью скроется с экрана.
Уведомления UIKeyboardWillShowNotification и UIKeyboardWillHideNotification несут с собой словари с пользовательской информацией. В этих словарях содержатся валидные ключи и значения. Далее перечислены те из ключей, которые могут быть вам интересны:
• UIKeyboardAnimationCurveUserInfoKey — значение этого ключа характеризует тип анимационной кривой, которая будет использоваться при выводе клавиатуры на экран или ее скрытии. Этот ключ содержит значение типа NSNumber (инкапсулированное в объекте типа NSValue), которое, в свою очередь, содержит беззнаковое целое типа NSUInteger;
• UIKeyboardAnimationDurationUserInfoKey — значение данного ключа указывает в секундах длительность анимации, применяемой при отображении или скрытии клавиатуры. Если клавиатура вот-вот будет отображена, то это будет рамка, в которой появится клавиатура. Если клавиатура уже есть на экране, это будет контур, обрамляющий клавиатуру на экране перед тем, как она уйдет с экрана. Этот ключ содержит значение типа CGRect (инкапсулированное в объекте типа NSValue);
Читать дальше
Конец ознакомительного отрывка
Купить книгу