Сенсорная клавиатура

2 февраля 2012 г.

Этот документ содержит сведения о поведении сенсорной клавиатуры при вызове и отключении в операционных системах Windows. Эти рекомендации помогают разработчикам понять, как отображается и скрывается сенсорная клавиатура.

Информация относится к следующим операционным системам:

  • Windows 8
  • Windows Server 2012

Заявление об отказе. Документ предоставлен "как есть". Сведения и мнения, приведенные в этом документе, включая URL-адреса и другие ссылки на веб-сайты, могут быть изменены без предупреждения. Риск их использования лежит на вас.

Этот документ не предоставляет юридических прав на какие-либо продукты интеллектуальной собственности Майкрософт. Документ можно копировать и использовать для внутренних целей или для справки.

©Майкрософт, 2012. Все права защищены.

Посмотрите, как работает эта функция в действии в качестве части нашей серии Компоненты приложений от "А" до "Я":  Взаимодействие с пользователем: сенсорный ввод... и не только.

Обзор

Сенсорная клавиатура Windows 8 — это системный компонент, который позволяет пользователям сенсорных устройств вводить текст. Сенсорная клавиатура появляется, когда пользователям нужно вводить текст, и исчезает, когда не нужно. Наша модель вызова и отключения разработана для того, чтобы данный принцип последовательно выполнялся во всей системе независимо от приложения, которое используется в определенный момент времени. Сенсорная клавиатура реагирует на свойства специальных возможностей пользовательского интерфейса как на совершенно определенные средства, позволяющие определить, нужен ли текстовый ввод в элементе пользовательского интерфейса с фокусом ввода. Помимо поощрения рекомендуемых приемов работы со специальными возможностями, этот подход позволяет сенсорной клавиатуре определить конкретный набор правил вызова и отключения, основанный на элементах пользовательского интерфейса, с которыми взаимодействуют пользователи.

Реакции сенсорной клавиатуры на события при вызове и отключении управляются в иммерсивной среде тремя типами входных данных:

  • свойствами специальных возможностей из модели автоматизации пользовательского интерфейса (UIA);
  • пользовательским касанием;
  • изменениями фокуса.

Модель автоматизации пользовательского интерфейса представляет собой механизм, с помощью которого разработчики сообщают о возможности конкретного элемента пользовательского интерфейса получать текстовый ввод. Чтобы сенсорная клавиатура появлялась, когда фокус оказывается на определенном элементе пользовательского интерфейса, вы должны убедиться, что в ваших приложениях заданы соответствующие свойства специальных возможностей. Для элементов управления, поставляемых Windows, это выполняется автоматически, поскольку соответствующие свойства специальных возможностей задаются по умолчанию, но для пользовательских элементов управления и взаимодействия необходимо выполнить дополнительные операции по заданию свойств специальных возможностей; помните, что сенсорная клавиатура реагирует на эти свойства. Клавиатура появляется, когда пользователь прикасается к полю ввода с фокусом ввода. Если в отдельных приложениях фокус задается программным способом, сенсорная клавиатура не вызывается касанием. Это происходит для того, чтобы не отвлекать пользователя появлением клавиатуры. Однако клавиатура автоматически скрывается в ответ на программные изменения фокуса, поэтому в случае, если пользователь завершил процесс ввода текста и приложение переместило фокус в другое место, клавиатура исчезает.

Логика вызова и отключения

Сенсорная клавиатура использует модель автоматизации пользовательского интерфейса как уже существующее и четко определенное средство, позволяющее определить, предназначен ли элемент пользовательского интерфейса с фокусом ввода для ввода текста и должна ли появиться клавиатура, если до этого она была скрыта. Модель автоматизации пользовательского интерфейса также позволяет определить, когда с элементом пользовательского интерфейса с фокусом ввода нельзя взаимодействовать с помощью сенсорной клавиатуры, и закрыть клавиатуру, если она отображается. Модель автоматизации пользовательского интерфейса предоставляется непосредственно с помощью Microsoft .NET для языка XAML, и к ней можно получить доступ посредством спецификации Accessible Rich Internet Applications (ARIA) для процесса WWAHost.exe. В общих элементах управления, предоставляемых разработчикам в Windows, соответствующие свойства модели автоматизации пользовательского интерфейса уже заданы, а для пользовательских элементов управления разработчики должны задать свойства специальных возможностей напрямую. В любой конкретный момент сенсорная клавиатура может находиться в одном из двух состояний: отображена или скрыта. Кроме того, после любого заданного изменения фокуса Windows может изменить состояние видимости клавиатуры или оставить его без изменений.

Чтобы определить, предназначен ли элемент пользовательского интерфейса с фокусом ввода для ввода текста, сенсорная клавиатура проверяет наличие шаблона элемента управления TextPattern (или TextChildPattern) модели автоматизации пользовательского интерфейса, а также проверяет, является ли этот шаблон редактируемым. Если элемент с фокусом ввода не удовлетворяет какому-либо из этих условий, сенсорная клавиатура не отображается или скрывается, если до этого отображалась.

Кроме того, существует ряд элементов управления, которые могут получать фокус в процессе ввода текста, но не являются редактируемыми (за исключением поля со списком, т. е. сочетания поля редактирования и списка, между которыми перемещается фокус). Чтобы напрасно не перегружать пользовательский интерфейс и не запутывать пользователя посреди процесса, сенсорная клавиатура остается на виду в элементах управления, так как пользователь скорее всего будет переходить между элементами управления и вводом текста с помощью сенсорной клавиатуры. Следовательно, если клавиатура уже отображается и фокус находится на элементе управления одного из перечисленных ниже типов, клавиатура не будет скрываться. Однако если клавиатура до этого была скрыта, она не отобразится, если не коснуться редактируемой области. В качестве примера представьте, что пользователь вводит сообщение электронной почты в приложении, в котором элементы управления редактированием текста, такие как "Полужирный" или "Курсив", размещены в строке команд приложения. Пользователь хочет сделать следующее слово полужирным и касается кнопки "Полужирный". Поскольку строка меню входит в список элементов управления, для которых сохраняется сенсорная клавиатура, она не скрывается, хотя пользователь и коснулся экрана за пределами поля ввода. Такая реакция на событие позволяет пользователю легко вернуться к вводу текста.

Элементы управления:

  • флажок;
  • поле со списком;
  • переключатель;
  • полоса прокрутки;
  • дерево;
  • элемент дерева;
  • меню;
  • строка меню;
  • элемент меню;
  • панель инструментов;
  • список;
  • элемент списка.

Задание соответствующих свойств специальных возможностей

Напоминание. Этот раздел важен только при работе с пользовательским элементом управления. Для правильной работы общих элементов управления, предоставляемых системой Windows, с сенсорной клавиатурой дополнительные операции не требуются.

Если вы как разработчик приложений работаете с пользовательским элементом управления, убедитесь, что в элементе управления имеется информация о специальных возможностях, поддерживающая реакцию на событие сенсорной клавиатуры. Тогда клавиатура будет отображаться и скрываться в соответствии с заданным пользовательским режимом.

В HTML5 достаточно просто задать нужное свойство ARIA в элементе управления: role="textbox". Безусловно, элемент управления также должен быть редактируемым, поэтому рекомендуется задать свойство contentEditable="true". Например, с помощью следующего тега создается элемент с редактируемым содержимым div, который при касании пользователя вызовет сенсорную клавиатуру.

<div contentEditable="true" role="textbox">

Если вы работаете с кодом C# или C++, используйте объект AutomationPeer — в частности, TextAutomationPeer. В примере для Windows 8 показано, как сделать это на C#.

Помните, что для вызова клавиатуры элемент управления должен иметь соответствующие настройки специальных возможностей, а также быть редактируемым и принимать ввод текста. Неправильное указание, что какой-либо элемент может получать текст, нарушит работу инструментов специальных возможностей и введет в заблуждение пользователей, которые них полагаются.

Управляемый пользователем вызов

Назначение модели вызова сенсорной клавиатуры — предоставить пользователю управление клавиатурой. Когда пользователи касаются элементов управления для ввода, они сообщают системе, что хотят вводить текст сами, а не оставлять это решение за приложением. Это сводит к нулю сценарии, в которых клавиатура вызывается неожиданно, что может быть источником серьезных перегрузок пользовательского интерфейса, поскольку клавиатура занимает до 50% экрана, и ухудшить взаимодействие приложения с пользователем. Чтобы активировать управляемый пользователем вызов, мы отслеживаем координаты последнего события сенсорного ввода и сравниваем их с местонахождением ограничивающего прямоугольника элемента, на который в данный момент установлен фокус. Если точка находится внутри ограничивающего прямоугольника, вызывается сенсорная клавиатура.

Это означает, что приложения не могут программно вызывать сенсорную клавиатуру, управляя фокусом. В прошлом много сложностей было связано с веб-страницами, —на которых фокус часто устанавливается по умолчанию в поле ввода, но пользователю доступно и другое содержимое. Показательным примером является msn.com. На этом веб-сайте много содержимого для потребления, но фокус по умолчанию установлен на строку поиска Bing в верхней части страницы. Если бы клавиатура вызывалась автоматически, то все статьи, расположенные ниже строки поиска, по умолчанию были бы закрыты, и это портило бы взаимодействие с веб-сайтом на планшетных компьютерах. Существуют определенные сценарии, когда вызывать клавиатуру касанием экрана неудобно — например если пользователь начал новое сообщение электронной почты или открыл панель поиска. Однако мы считаем требование коснуться поля ввода приемлемым компромиссом.

 

 

Показ:
© 2015 Microsoft