Приложение «Gestures» станет частью ОС Windows 10 и принесет новые возможности
Около полугода назад, компания Microsoft продемонстрировало пользователям beta-версию нового приложения под названием «Gestures», которое позволяло интуитивно управлять телефоном и выводило взаимодействие с ним на новый уровень.

Стало известно, что данные возможности войдут в состав финальной версии Windows 10 для телефонов и малых планшетов (до 8 дюймов), вместе с которыми анонсированы и новые функции, доступные из раздела Settings (настройки). Так, на основании пользовательских голосов на портале windows.uservoice.com, Microsoft решили добавить в приложение такие функции, как:
- переключение между композициями в плеере встряхиванием;
- сигнал после соединения с вызываемым абонентом;
- отключение будильника переворачиванием телефона, подобно управлению входящим звонком, т.е. экраном вниз;
- уведомление после выключения микрофона во время разговора.

GestureSign – управляем Windows 10 с помощью жестов
В поставляемой из коробки Windows 10 уже имеется поддержка жестов для управления базовыми функциями, но, если сравнивать ее возможности с возможностями, предлагаемыми сторонними программами, она покажется весьма ограниченной. GestureSign как раз является одной из таких программ.
Это универсальное приложение разработано специально для Windows 10, чтобы расширить возможности управления системой посредством жестов с использованием мыши, тачпада или сенсорного экрана.
Возможности GestureSign
С помощью GestureSign можно запускать программы, управлять их окнами, выполнять разные команды, открывать сайты и файлы, изменять уровень громкости и яркости, а также имитировать нажатия клавиш на физической клавиатуре и некоторые действия мыши.
В программе уже имеется набор готовых жестов, среди них доступны копирование, повышение и понижение громкости, запуск браузера, переключение между открытыми вкладками, остановка медиаплеера на паузу и т.д. Также вы можете создавать свои наборы жестов и редактировать уже имеющиеся.
Как работать с программой?
Чтобы вам было понятно, как работать с программой, создадим для примера жест для запуска редактора реестра.
По умолчанию управление жестами в программе отключено, поэтому переключаемся на вкладку «Options», выбираем и активируем нужный режим управления (мышь, тачпад или сенсорный дисплей).
Здесь же вы можете изменить цвет, прозрачность и толщину линий, демонстрируемых на экране во время выполнения жестов, выбрать кнопку мыши, при зажатии которой станут рисоваться линии.
За сим возвращаемся на главную вкладку «Action», жмем кнопку с изображением плюса и кликаем по создавшемуся блоку там, где написано «Click to sеlect a gesture».
В открывшемся окошке вводим имя жеста, сохраняемся и еще раз кликаем по блоку, только на этот раз в правой его области.
В открывшемся окошке выбираем тип команды (в данном случае Run), в поле «Command» вводим команду regedit, даем команде подходящее имя и сохраняем настройки. Всё, теперь открывать редактор реестра можно будет заданным жестом.
Точно таким же образом можно настроить запуск других программ либо открытие файлов, указав к ним полный путь в поле ввода команды.
Впрочем, одним лишь запуском приложений и управлением базовыми функциями системы возможности GestureSign не ограничиваются.
Дополнительно приложением поддерживается создание списка исключений, импорт и экспорт настроек, а также настройка поведения (автозагрузка, установка задержки выполнения команд и т.д.).
Как и большинство универсальных приложений, распространяется GestureSign через Магазин Windows. Программа бесплатна, на официальной странице разработчика GitHub выложен исходный код. Среди языков интерфейса доступны пока что только английский и китайский.
Взаимодействия с помощью сенсорного ввода Touch interactions
Проектируйте приложение с учетом того, что сенсорный ввод будет главным методом ввода для пользователей. Design your app with the expectation that touch will be the primary input method of your users. Если вы используете элементы управления UWP, то для поддержки сенсорной панели, мыши и пера не требуется дополнительное программирование, поскольку приложения UWP предоставляют такую поддержку бесплатно. If you use UWP controls, support for touchpad, mouse, and pen/stylus requires no additional programming, because UWP apps provide this for free.
Однако имейте в виду, что пользовательский интерфейс, оптимизированный для сенсорного ввода, не всегда будет лучше традиционного интерфейса. However, keep in mind that a UI optimized for touch is not always superior to a traditional UI. И тот и другой имеют свои достоинства и недостатки в технологии и применении. Both provide advantages and disadvantages that are unique to a technology and application. При переходе к пользовательскому интерфейсу Touch важно понимать основные различия между сенсорным касанием, сенсорной панелью, пером, планшетом и вводом с клавиатуры. In the move to a touch-first UI, it is important to understand the core differences between touch, touchpad, pen/stylus, mouse, and keyboard input.
Многие устройства оснащены мультисенсорными экранами, которые поддерживают использование одного или нескольких пальцев (либо сенсорных контактов) для ввода данных. Many devices have multi-touch screens that support using one or more fingers (or touch contacts) as input. Сенсорные контакты и их перемещение интерпретируются как сенсорные жесты и манипуляции для поддержки различных видов взаимодействия с пользователем. The touch contacts, and their movement, are interpreted as touch gestures and manipulations to support various user interactions.
Приложение Windows включает ряд различных механизмов обработки сенсорного ввода, позволяя создавать впечатляющие впечатления, которые пользователи могут исследовать с уверенностью. The Windows app includes a number of different mechanisms for handling touch input, enabling you to create an immersive experience that your users can explore with confidence. Здесь мы расскажем об основах использования сенсорного ввода в приложении Windows. Here, we cover the basics of using touch input in a Windows app.
Для сенсорного взаимодействия требуются 3 вещи: Touch interactions require three things:
- Сенсорный дисплей. A touch-sensitive display.
- Прямое прикосновение (или близкое взаимодействие, если дисплей снабжен бесконтактными датчиками и поддерживает обнаружение наведения) из одного или нескольких пальцев к экрану. The direct contact (or proximity to, if the display has proximity sensors and supports hover detection) of one or more fingers on that display.
- Перемещение точек контакта (или отсутствие такового — в зависимости от порогового значения времени). Movement of the touch contacts (or lack thereof, based on a time threshold).
Входные данные, выводимые датчиком прикосновения, могут: The input data provided by the touch sensor can be:
- интерпретироваться как физический жест для непосредственного взаимодействия с одним или несколькими элементами пользовательского интерфейса (например, для сдвига, поворота, изменения размера или перемещения); Interpreted as a physical gesture for direct manipulation of one or more UI elements (such as panning, rotating, resizing, or moving). в противоположность этому взаимодействие с элементом через его окно свойств, диалоговое окно или другую возможность пользовательского интерфейса называется косвенной манипуляцией; In contrast, interacting with an element through its properties window, dialog box, or other UI affordance is considered indirect manipulation.
- распознаваться как альтернативный метод ввода, такой как мышь или перо; Recognized as an alternative input method, such as mouse or pen.
- использоваться для дополнения или изменения различных аспектов других методов ввода, например размытие росчерка пера. Used to complement or modify aspects of other input methods, such as smudging an ink stroke drawn with a pen.
Сенсорный ввод обычно предусматривает прямую манипуляцию элементом на экране. Touch input typically involves the direct manipulation of an element on the screen. Элемент немедленно отвечает на любой сенсорный контакт в рамках своей области проверки и реагирует соответственно на любое последующее движение сенсорных контактов, в том числе удаление. The element responds immediately to any touch contact within its hit test area, and reacts appropriately to any subsequent movement of the touch contacts, including removal.
Нестандартные жесты сенсорного ввода и взаимодействия следует разрабатывать с особой аккуратностью. Custom touch gestures and interactions should be designed carefully. Они должны быть интуитивно понятными и обнаруживаемыми, иметь быстрый отклик и обеспечивать уверенность пользователя во время работы с вашим приложением. They should be intuitive, responsive, and discoverable, and they should let users explore your app with confidence.
Убедитесь, что функции приложения предоставляются согласованно на всех поддерживаемых типах устройств ввода. Ensure that app functionality is exposed consistently across every supported input device type. При необходимости используйте какую-либо форму режима косвенного ввода, например текстовый ввод для взаимодействий с помощью клавиатуры или возможности пользовательского интерфейса для мыши и пера. If necessary, use some form of indirect input mode, such as text input for keyboard interactions, or UI affordances for mouse and pen.
Помните, что традиционные устройства ввода (такие как мышь и клавиатура) знакомы и привычны множеству пользователей. Remember that traditional input devices (such as mouse and keyboard), are familiar and appealing to many users. Они могут обеспечивать скорость работы, точность и тактильную обратную связь, недостижимые для сенсорного управления. They can offer speed, accuracy, and tactile feedback that touch might not.
Предоставление уникальных и разнообразных процедур взаимодействия для всех устройств ввода обеспечит поддержку максимально широкого диапазона возможностей и параметров, благодаря чему ваши приложения будут иметь успех у самой широкой аудитории, привлекая к себе больше клиентов. Providing unique and distinctive interaction experiences for all input devices will support the widest range of capabilities and preferences, appeal to the broadest possible audience, and attract more customers to your app.
Сравнение требований, предъявляемых к взаимодействию с сенсорным экраном Compare touch interaction requirements
В следующей таблице показаны некоторые различия между устройствами ввода, которые следует учитывать при проектировании оптимизированных для сенсорных приложений Windows. The following table shows some of the differences between input devices that you should consider when you design touch-optimized Windows apps.
| Фактор Factor | Взаимодействия с помощью сенсорного ввода Touch interactions | Взаимодействие с помощью мыши, клавиатуры, пера Mouse, keyboard, pen/stylus interactions | Touchpad Touchpad |
|---|---|---|---|
| Точность Precision | Контактная поверхность кончиков пальцев больше, чем отдельная пара координат X-Y, поэтому увеличивается вероятность случайного выполнения команд. The contact area of a fingertip is greater than a single x-y coordinate, which increases the chances of unintended command activations. | Мышь и перо передают точные координаты X-Y. The mouse and pen/stylus supply a precise x-y coordinate. | Аналогично мыши. Same as mouse. |
| Форма контактной поверхности изменяется при движении. The shape of the contact area changes throughout the movement. | Перемещения мыши и пера передают точные координаты X-Y. Mouse movements and pen/stylus strokes supply precise x-y coordinates. Клавиатурная фокусировка определена явно. Keyboard focus is explicit. | Аналогично мыши. Same as mouse. | |
| Отсутствует указатель мыши для нацеливания. There is no mouse cursor to assist with targeting. | Указатель мыши, указатель пера и клавиатурная фокусировка позволяют выполнить нацеливание. The mouse cursor, pen/stylus cursor, and keyboard focus all assist with targeting. | Аналогично мыши. Same as mouse. | |
| Анатомия человека Human anatomy | Движения кончиков пальцев являются неточными, так как прямолинейное перемещение одного или нескольких пальцев затруднено Fingertip movements are imprecise, because a straight-line motion with one or more fingers is difficult. из-за изгиба суставов кисти и одновременного участия в движении нескольких суставов. This is due to the curvature of hand joints and the number of joints involved in the motion. | Мышью или пером прямолинейное движение выполняется легче, так как кисть руки передвигается на расстояние, которое значительно короче, чем перемещение курсора на экране. It’s easier to perform a straight-line motion with the mouse or pen/stylus because the hand that controls them travels a shorter physical distance than the cursor on the screen. | Аналогично мыши. Same as mouse. |
| Некоторые участки на поверхности сенсорного экрана могут быть труднодоступны при определенных положениях пальцев и захвате устройства пользователем. Some areas on the touch surface of a display device can be difficult to reach due to finger posture and the user’s grip on the device. | Указатель мыши или перо может достигать любой части экрана, и при этом любой элемент управления должен быть доступен с клавиатуры с помощью последовательности табуляции. The mouse and pen/stylus can reach any part of the screen while any control should be accessible by the keyboard through tab order. | Проблемой может стать расположение пальцев и руки, держащей устройство. Finger posture and grip can be an issue. | |
| Объекты могут заслоняться одним или несколькими пальцами или кистью руки. Objects might be obscured by one or more fingertips or the user’s hand. Это называется загораживанием экрана. This is known as occlusion. | Устройства ввода непрямого действия не вызывают загораживание экрана. Indirect input devices do not cause occlusion. | Аналогично мыши. Same as mouse. | |
| Состояние объекта Object state | Для сенсорного ввода характерны два состояния: сенсорная поверхность дисплея может либо соприкасаться с рукой (активна), либо нет (не активна). Touch uses a two-state model: the touch surface of a display device is either touched (on) or not (off). Состояние при наведении, при котором может быть инициирована дополнительная визуальная обратная связь, отсутствует. There is no hover state that can trigger additional visual feedback. | Аналогично мыши. Same as mouse. | |
| Сложное взаимодействие Rich interaction | Поддерживается мультисенсорная технология: множественные точки ввода (кончиками пальцев) на поверхности сенсорного экрана. Supports multi-touch: multiple input points (fingertips) on a touch surface. | Поддерживается единственная точка ввода. Supports a single input point. | Аналогично сенсорному вводу. Same as touch. |
| Поддерживается прямое манипулирование объектами с помощью таких операций, как касание, перетаскивание, скольжение, изменение размера и вращение. Supports direct manipulation of objects through gestures such as tapping, dragging, sliding, pinching, and rotating. | Прямая манипуляция не поддерживается, так как мышь, перо и клавиатура являются устройствами ввода непрямого действия. No support for direct manipulation as mouse, pen/stylus, and keyboard are indirect input devices. | Аналогично мыши. Same as mouse. |
Преимущество непрямого ввода состоит в том, что он совершенствовался более 25 лет. Indirect input has had the benefit of more than 25 years of refinement. Такие функции, как всплывающие при наведении подсказки, были разработаны с целью облегчить работу с пользовательским интерфейсом специально для ввода с помощью сенсорной панели, мыши, пера и клавиатуры. Features such as hover-triggered tooltips have been designed to solve UI exploration specifically for touchpad, mouse, pen/stylus, and keyboard input. Подобные элементы пользовательского интерфейса были переработаны, чтобы обогатить взаимодействие путем использования сенсорного ввода, не нарушая взаимодействие с пользователем с помощью других устройств. UI features like this have been re-designed for the rich experience provided by touch input, without compromising the user experience for these other devices.
Использование обратной связи сенсорного ввода Use touch feedback
Надлежащая визуальная обратная связь при взаимодействии с вашим приложением помогает пользователям узнать, изучить и приспособиться к тому, как их взаимодействия интерпретируются самим приложением и платформой Windows. Appropriate visual feedback during interactions with your app helps users recognize, learn, and adapt to how their interactions are interpreted by both the app and the Windows platform. Визуальная обратная связь может показать успешные взаимодействия, определить состояние системы, улучшить чувствительность системы управления, сократить количество ошибок, помочь пользователям понять систему и устройство ввода, а также поощрять взаимодействие с системой. Visual feedback can indicate successful interactions, relay system status, improve the sense of control, reduce errors, help users understand the system and input device, and encourage interaction.
Визуальная обратная связь особенно важна, когда сенсорный ввод применяется для операций, которые требуют правильного и точного задания расположения. Visual feedback is critical when the user relies on touch input for activities that require accuracy and precision based on location. Отображение обратной связи всякий раз, когда обнаруживается сенсорный ввод, позволит пользователю понять правила наведения, которые действуют в вашем приложении и его элементах управления. Display feedback whenever and wherever touch input is detected, to help the user understand any custom targeting rules that are defined by your app and its controls.
Целевая настройка Targeting
Для оптимизации нацеливания используются: Targeting is optimized through:
Размеры целей касания Touch target sizes
Четкие рекомендации по размерам позволяют оснастить приложения удобным пользовательским интерфейсом, с объектами и элементами управления которого легко и безопасно работать. Clear size guidelines ensure that applications provide a comfortable UI that contains objects and controls that are easy and safe to target.
Форма области контакта Contact geometry
Наиболее вероятный целевой объект определяется по всей контактной области пальца. The entire contact area of the finger determines the most likely target object.
Чтобы заново нацелиться на элементы группы (например, переключатели), проведите между ними пальцем. Items within a group are easily re-targeted by dragging the finger between them (for example, radio buttons). Текущий элемент активируется, когда касание прекращается. The current item is activated when the touch is released.
Чтобы заново нацелиться на близко расположенные элементы (например, гиперссылки), нажмите их пальцем и, не давая соскользнуть, покачайте его туда-сюда над элементами. Densely packed items (for example, hyperlinks) are easily re-targeted by pressing the finger down and, without sliding, rocking it back and forth over the items. Так как элементы загораживаются, текущий элемент определяется по подсказке или строке состояния; он активируется при прекращении касания. Due to occlusion, the current item is identified through a tooltip or the status bar and is activated when the touch is released.
Точность Accuracy
Для проектирования обработки небрежных касаний используются: Design for sloppy interactions by using:
- Точки прикрепления, которые помогут остановиться в нужном месте при взаимодействии с содержимым. Snap-points that can make it easier to stop at desired locations when users interact with content.
- Направляющие «рельсы», облегчающие вертикальный или горизонтальный сдвиг, даже если рука движется слегка по дуге. Дополнительные сведения см. в Руководстве по функции сдвига. Directional «rails» that can assist with vertical or horizontal panning, even when the hand moves in a slight arc. For more information, see Guidelines for panning.
Загораживание Occlusion
Чтобы пальцы и рука не загораживали элементы, сделайте следующее: Finger and hand occlusion is avoided through:
Размер и размещение пользовательского интерфейса Size and positioning of UI
Делайте элементы пользовательского интерфейса достаточно большими, чтобы контактная область пальца не закрывала их полностью. Make UI elements big enough so that they cannot be completely covered by a fingertip contact area.
Где возможно, размещайте меню и всплывающие окна над областью контакта. Position menus and pop-ups above the contact area whenever possible.
Показывайте подсказки, когда пользователь удерживает палец на объекте. Show tooltips when a user maintains finger contact on an object. Это удобно для описания функций объекта. This is useful for describing object functionality. Пользователь может сдвинуть палец с объекта, чтобы не открывать подсказку. The user can drag the fingertip off the object to avoid invoking the tooltip.
Если объекты небольшие, сместите подсказки так, чтобы контактная область пальца их не закрывала. For small objects, offset tooltips so they are not covered by the fingertip contact area. Это удобно при нацеливании. This is helpful for targeting.
Маркеры для точности Handles for precision
Там, где нужна точность (например, при выборе текста), обеспечьте маркеры выделения, смещенные в целях повышения точности. Where precision is required (for example, text selection), provide selection handles that are offset to improve accuracy. Подробнее: Руководство по выделению текста и изображений (приложения среды выполнения Windows). For more information, see Guidelines for selecting text and images (Windows Runtime apps).
Временные свойства Timing
Вместо смены режима по времени пользуйтесь прямой манипуляцией. Avoid timed mode changes in favor of direct manipulation. Прямая манипуляция имитирует непосредственное физическое воздействие на объект в реальном времени. Direct manipulation simulates the direct, real-time physical handling of an object. Объект реагирует на перемещение пальцев. The object responds as the fingers are moved.
С другой стороны, после взаимодействия с сенсорным экраном происходит реакция, основанная на времени. A timed interaction, on the other hand, occurs after a touch interaction. Обычно взаимодействия на основе времени зависят от неочевидных пороговых величин: времени, расстояния или скорости, определяющих, какая команда будет выполнена. Timed interactions typically depend on invisible thresholds like time, distance, or speed to determine what command to perform. Основанные на времени взаимодействия не имеют визуальной обратной связи, пока в системе не будет выполнено действие. Timed interactions have no visual feedback until the system performs the action.
Прямое манипулирование обеспечивает ряд преимуществ по сравнению с взаимодействиями, основанными на времени. Direct manipulation provides a number of benefits over timed interactions:
- Мгновенная визуальная обратная связь при взаимодействии повышает заинтересованность пользователей и укрепляет уверенность в себе. Instant visual feedback during interactions make users feel more engaged, confident, and in control.
- Прямое манипулирование обратимо, поэтому позволяет без лишнего риска исследовать систему. Пользователи легко могут отменять свои действия шаг за шагом. Для этого используются логические и интуитивно понятные приемы. Direct manipulations make it safer to explore a system because they are reversible—users can easily step back through their actions in a logical and intuitive manner.
- Взаимодействия, непосредственно влияющие на объекты и имитирующие то, что происходит в реальности, легче обнаружить, понять и запомнить. Interactions that directly affect objects and mimic real world interactions are more intuitive, discoverable, and memorable. Они не связаны с неочевидными или абстрактными взаимодействиями. They don’t rely on obscure or abstract interactions.
- Основанные на времени взаимодействия могут быть трудны для выполнения, так как пользователи должны достигать произвольных и невидимых пороговых значений. Timed interactions can be difficult to perform, as users must reach arbitrary and invisible thresholds.
Кроме того, настоятельно рекомендуется следующее. In addition, the following are strongly recommended:
Манипуляции не следует различать по количеству используемых пальцев. Manipulations should not be distinguished by the number of fingers used.
Взаимодействия должны поддерживать сложные манипуляции. Interactions should support compound manipulations. Например, пользователь может свести пальцы, чтобы изменить размер содержимого, и одновременно провести ими, чтобы сдвинуть его. For example, pinch to zoom while dragging the fingers to pan.
Взаимодействия не должны различаться по времени. Interactions should not be distinguished by time. Одно и то же взаимодействие должно приводить к определенному результату, сколько бы времени ни потребовалось на его выполнение. The same interaction should have the same outcome regardless of the time taken to perform it. Зависимые от времени активации вводят обязательные задержки для пользователей, в результате чего обесценивается иммерсивный характер прямого манипулирования и снижается скорость восприятия ответа системы. Time-based activations introduce mandatory delays for users and detract from both the immersive nature of direct manipulation and the perception of system responsiveness.
Исключением является то, что вы используете определенные временные взаимодействия для обучения и исследования (например, для нажатия и удерживания). An exception to this is where you use specific timed interactions to assist in learning and exploration (for example, press and hold).
Подходящие описания и визуальные подсказки очень эффективны при использовании расширенных взаимодействий. Appropriate descriptions and visual cues have a great effect on the use of advanced interactions.
Представления приложения App views
Оптимизируйте взаимодействие с пользователем, настроив параметры сдвига, прокрутки и масштабирования в представлениях ваших приложений. Tweak the user interaction experience through the pan/scroll and zoom settings of your app views. Представление приложения контролирует то, как пользователь выполняет доступ к вашему приложению с его содержимым и управляет ими. An app view dictates how a user accesses and manipulates your app and its content. Представления также обеспечивают различное поведение, например инерцию, отскок от границы содержимого, точки прикрепления. Views also provide behaviors such as inertia, content boundary bounce, and snap points.
Параметры сдвига и прокрутки элемента управления ScrollViewer управляют навигацией в рамках отдельного представления, когда его содержимое не умещается в одном окне просмотра. Pan and scroll settings of the ScrollViewer control dictate how users navigate within a single view, when the content of the view doesn’t fit within the viewport. Отдельным представлением может быть, например, страница журнала или книги, структура папок на компьютере, библиотека документов или фотоальбом. A single view can be, for example, a page of a magazine or book, the folder structure of a computer, a library of documents, or a photo album.
Параметры масштабирования относятся как к визуальному масштабированию (поддерживается элементом управления ScrollViewer), так и к элементу управления Контекстное масштабирование. Zoom settings apply to both optical zoom (supported by the ScrollViewer control) and the Semantic Zoom control. Контекстное масштабирование — это оптимизированный для сенсорной технологии метод представления большого количества взаимосвязанных данных или содержимого в пределах отдельного представления и навигации по таким данным. Semantic Zoom is a touch-optimized technique for presenting and navigating large sets of related data or content within a single view. В нем используются два различных режима классификации (масштаба). It works by using two distinct modes of classification, or zoom levels. Это похоже на сдвиг и прокрутку в отдельном представлении. This is analogous to panning and scrolling within a single view. Сдвиг и прокрутка могут использоваться в связке с контекстным масштабированием. Panning and scrolling can be used in conjunction with Semantic Zoom.
Используйте представления и события приложений для изменения поведения сдвига или прокрутки и масштабирования. Use app views and events to modify the pan/scroll and zoom behaviors. Таким образом можно обеспечить более плавное взаимодействие, чем при обработке событий указателя и жестов. This can provide a smoother interaction experience than is possible through the handling of pointer and gesture events.
Подробнее о представлениях приложения см. в разделе Элементы управления, макеты и текст. For more info about app views, see Controls, layouts, and text.
Настраиваемые сенсорные взаимодействия Custom touch interactions
Если вы реализуете собственную поддержку взаимодействий, помните: пользователи ожидают, что способ взаимодействия с элементами пользовательского интерфейса приложения будет интуитивно понятным. If you implement your own interaction support, keep in mind that users expect an intuitive experience involving direct interaction with the UI elements in your app. Рекомендуется моделировать взаимодействия с пользователем на базе библиотек элементов управления платформы, чтобы обеспечить единообразие элементов и возможность их обнаруживать. We recommend that you model your custom interactions on the platform control libraries to keep things consistent and discoverable. Элементы управления в этих библиотеках предоставляют все механизмы взаимодействия с пользователем, в том числе стандартные взаимодействия, анимированные физические эффекты, визуальную обратную связь и специальные возможности. The controls in these libraries provide the full user interaction experience, including standard interactions, animated physics effects, visual feedback, and accessibility. Создавайте пользовательские взаимодействия, только если существует явное, четко определенное требование и если ни один стандартный механизм взаимодействия не поддерживает ваш сценарий. Create custom interactions only if there is a clear, well-defined requirement and basic interactions don’t support your scenario.
Чтобы обеспечить настраиваемую поддержку сенсорного ввода, вы можете обрабатывать различные события UIElement. To provide customized touch support, you can handle various UIElement events. Эти события относятся к трем разным уровням абстракции. These events are grouped into three levels of abstraction.
Статические события жестов срабатывают по завершении взаимодействия. Static gesture events are triggered after an interaction is complete. События жестов включают в себя Tapped, DoubleTapped, RightTapped и Holding. Gesture events include Tapped, DoubleTapped, RightTapped, and Holding.
События указателя, такие как поинтерпрессед и поинтермовед , предоставляют низкоуровневые сведения для каждого сенсорного контакта, включая перемещение указателя и возможность отличать события нажатия и выпуска. Pointer events such as PointerPressed and PointerMoved provide low-level details for each touch contact, including pointer motion and the ability to distinguish press and release events.
Указатель — это универсальный тип ввода с унифицированным механизмом событий. A pointer is a generic input type with a unified event mechanism. Он предоставляет базовую информацию, такую как экранные координаты, для активного источника ввода, которым может быть сенсорный экран, сенсорная панель, мышь или перо. It exposes basic info, such as screen position, on the active input source, which can be touch, touchpad, mouse, or pen.
Манипуляционные события жестов, например ManipulationStarted, информируют о взаимодействии с пользователем, которое идет в данный момент. Manipulation gesture events, such as ManipulationStarted, indicate an ongoing interaction. Они запускаются, когда пользователь касается элемента, и продолжаются, до тех пор пока пользователь не отведет пальцы или взаимодействие не отменится. They start firing when the user touches an element and continue until the user lifts their finger(s), or the manipulation is canceled.
События манипуляции включают в себя мультисенсорные взаимодействия, такие как масштабирование, сдвиг или поворот, и взаимодействия, использующие данные инерции и скорости, такие как перетаскивание. Manipulation events include multi-touch interactions such as zooming, panning, or rotating, and interactions that use inertia and velocity data such as dragging. Информация, предоставляемая событиями манипуляций, не идентифицирует форму выполненного взаимодействия, а содержит данные, касающиеся, например, положения, дельты преобразования и скорости. The information provided by the manipulation events doesn’t identify the form of the interaction that was performed, but rather includes data such as position, translation delta, and velocity. Эти данные сенсорного ввода можно использовать для определения типа взаимодействия, которое необходимо выполнить. You can use this touch data to determine the type of interaction that should be performed.
Вот основной набор мультисенсорных жестов, поддерживаемых UWP. Here is the basic set of touch gestures supported by the UWP.
| Имя Name | Тип Type | Описание Description |
|---|---|---|
| Касание Tap | Статический жест Static gesture | Пользователь касается экрана одним пальцем, затем отводит палец. One finger touches the screen and lifts up. |
| Нажатие и удерживание Press and hold | Статический жест Static gesture | Пользователь прикасается к экрану одним пальцем и оставляет палец на месте. One finger touches the screen and stays in place. |
| Slide (Слайд) Slide | Жест манипуляции Manipulation gesture | Пользователь прикасается к экрану одним или несколькими пальцами и двигает их в одном направлении. One or more fingers touch the screen and move in the same direction. |
| Swipe Swipe | Жест манипуляции Manipulation gesture | Пользователь прикасается к экрану одним или несколькими пальцами и перемещает их на короткое расстояние в одном направлении. One or more fingers touch the screen and move a short distance in the same direction. |
| Вращение Turn | Жест манипуляции Manipulation gesture | Пользователь прикасается к экрану двумя или несколькими пальцами и двигает их по дуге в направлении по часовой стрелке или против нее. Two or more fingers touch the screen and move in a clockwise or counter-clockwise arc. |
| Сжатие Pinch | Жест манипуляции Manipulation gesture | Пользователь прикасается к экрану двумя или более пальцами и сдвигает их. Two or more fingers touch the screen and move closer together. |
| Stretch Stretch | Жест манипуляции Manipulation gesture | Пользователь прикасается к экрану двумя или более пальцами и раздвигает их. Two or more fingers touch the screen and move farther apart. |
События жестов Gesture events
Подробнее об отдельных элементах управления см. в разделе Список элементов управления. For details about individual controls, see Controls list.
События указателя Pointer events
События указателя вызываются различными активными источниками ввода, включая сенсорный экран, сенсорную панель, перо и мышь (они заменяют традиционные события мыши). Pointer events are raised by a variety of active input sources, including touch, touchpad, pen, and mouse (they replace traditional mouse events.)
События указателя основаны на единственной точке ввода (палец, кончик пера, курсор мыши) и не поддерживают взаимодействия на основе обработки данных скорости. Pointer events are based on a single input point (finger, pen tip, mouse cursor) and do not support velocity-based interactions.
Вот список событий указателя и их связанный аргумент события. Here is a list of pointer events and their related event argument.
| Событие или класс Event or class | Описание Description |
|---|---|
| PointerPressed PointerPressed | Происходит при касании экрана одним пальцем. Occurs when a single finger touches the screen. |
| PointerReleased PointerReleased | Происходит, когда тот же сенсорный контакт прекращается. Occurs when that same touch contact is lifted. |
| PointerMoved PointerMoved | Происходит, когда указатель перетаскивается по экрану. Occurs when the pointer is dragged across the screen. |
| PointerEntered PointerEntered | Происходит, когда указатель входит в область проверки нажатия элемента. Occurs when a pointer enters the hit test area of an element. |
| PointerExited PointerExited | Происходит, когда указатель выходит из области проверки нажатия элемента. Occurs when a pointer exits the hit test area of an element. |
| PointerCanceled PointerCanceled | Происходит при ненормальном завершении сенсорного контакта. Occurs when a touch contact is abnormally lost. |
| PointerCaptureLost PointerCaptureLost | Происходит, когда перехват событий указателя выполняется другим элементом. Occurs when a pointer capture is taken by another element. |
| PointerWheelChanged PointerWheelChanged | Происходит при изменении Дельта-значения колесика мыши и при сжатии сенсорной панели. Occurs when the delta value of a mouse wheel changes and when the touchpad is pinched. |
| поинтерраутедевентаргс PointerRoutedEventArgs | Предоставляет данные для всех событий указателя. Provides data for all pointer events. |
В следующем примере показано, как использовать события PointerPressed, PointerReleased и PointerExited для обработки взаимодействия в форме касания на объекте Rectangle. The following example shows how to use the PointerPressed, PointerReleased, and PointerExited events to handle a tap interaction on a Rectangle object.
Сначала в XAML создается объект Rectangle с именем touchRectangle . First, a Rectangle named touchRectangle is created in Extensible Application Markup Language (XAML).
Наконец, обработчик событий PointerPressed увеличивает параметры Height и Width объекта Rectangle, в то время, как обработчики событий PointerReleased и PointerExited возвращают параметры Height и Width к начальным значениям. Finally, the PointerPressed event handler increases the Height and Width of the Rectangle, while the PointerReleased and PointerExited event handlers set the Height and Width back to their starting values.
События манипуляции Manipulation events
Используйте события манипуляции, если в приложении нужно обеспечить поддержку взаимодействия с помощью нескольких пальцев или взаимодействий, требующих данные о скорости. Use manipulation events if you need to support multiple finger interactions in your app, or interactions that require velocity data.
С помощью событий манипуляций можно обнаруживать такие взаимодействия, как перетаскивание, масштабирование и удерживание. You can use manipulation events to detect interactions such as drag, zoom, and hold.
Сенсорная панель не создает события манипуляции. The touchpad does not raise Manipulation events. Вместо этого для ввода с сенсорной панели будут созданы события указателя. Instead, pointer events will be raised for touchpad input.
Вот список событий манипуляций и аргументы связанных событий. Here is a list of manipulation events and related event arguments.
| Событие или класс Event or class | Описание Description |
|---|---|
| Событие ManipulationStarting ManipulationStarting event | Происходит при первоначальном создании процессора манипулирования. Occurs when the manipulation processor is first created. |
| Событие ManipulationStarted ManipulationStarted event | Происходит, когда устройство ввода начинает манипуляцию над UIElement. Occurs when an input device begins a manipulation on the UIElement. |
| Событие ManipulationDelta ManipulationDelta event | Происходит, когда устройство ввода меняет положение в процессе манипуляции. Occurs when the input device changes position during a manipulation. |
| Событие ManipulationInertiaStarting ManipulationInertiaStarting event | Происходит, если во время манипуляции устройство ввода теряет контакт с объектом UIElement и начинает действовать инерция. Occurs when the input device loses contact with the UIElement object during a manipulation and inertia begins. |
| Событие ManipulationCompleted ManipulationCompleted event | Происходит, когда манипуляция и движение по инерции для UIElement завершены. Occurs when a manipulation and inertia on the UIElement are complete. |
| ManipulationStartingRoutedEventArgs ManipulationStartingRoutedEventArgs | Предоставляет данные для события ManipulationStarting. Provides data for the ManipulationStarting event. |
| ManipulationStartedRoutedEventArgs ManipulationStartedRoutedEventArgs | Предоставляет данные для события ManipulationStarted. Provides data for the ManipulationStarted event. |
| ManipulationDeltaRoutedEventArgs ManipulationDeltaRoutedEventArgs | Предоставляет данные для события ManipulationDelta. Provides data for the ManipulationDelta event. |
| ManipulationInertiaStartingRoutedEventArgs ManipulationInertiaStartingRoutedEventArgs | Предоставляет данные для события ManipulationInertiaStarting. Provides data for the ManipulationInertiaStarting event. |
| ManipulationVelocities ManipulationVelocities | Описывает скорость, с которой происходят манипуляции. Describes the speed at which manipulations occur. |
| ManipulationCompletedRoutedEventArgs ManipulationCompletedRoutedEventArgs | Предоставляет данные для события ManipulationCompleted. Provides data for the ManipulationCompleted event. |
Жест состоит из серии событий манипуляции. A gesture consists of a series of manipulation events. Каждый жест начинается с события ManipulationStarted , например, когда пользователь касается экрана. Each gesture starts with a ManipulationStarted event, such as when a user touches the screen.
Далее запускаются одно или несколько событий ManipulationDelta. Next, one or more ManipulationDelta events are fired. Например, если коснуться экрана, а затем провести по нему пальцем. For example, if you touch the screen and then drag your finger across the screen. Наконец, после завершения взаимодействия вызывается событие ManipulationCompleted. Finally, a ManipulationCompleted event is raised when the interaction finishes.
Если у вас нет монитора сенсорного экрана, можно протестировать код события манипуляции в симуляторе, используя интерфейс мыши и колесика мыши. If you don’t have a touch-screen monitor, you can test your manipulation event code in the simulator using a mouse and mouse wheel interface.
Следующий пример показывает, как использовать события ManipulationDelta для обработки взаимодействия в форме скольжения на объекте Rectangle и его перемещения по экрану. The following example shows how to use the ManipulationDelta events to handle a slide interaction on a Rectangle and move it across the screen.
Сначала в XAML создается объект Rectangle с именем touchRectangle , свойства Height и Width которого имеют значение 200. First, a Rectangle named touchRectangle is created in XAML with a Height and Width of 200.
Затем создается глобальный параметр TranslateTransform с именем dragTranslation для преобразования Rectangle. Next, a global TranslateTransform named dragTranslation is created for translating the Rectangle. Прослушиватель событий ManipulationDelta указывается на объекте Rectangle, и параметр dragTranslation добавляется к параметру RenderTransform объекта Rectangle. A ManipulationDelta event listener is specified on the Rectangle, and dragTranslation is added to the RenderTransform of the Rectangle.
Перенаправленные события Routed events
Все события указателя, события жестов и события манипуляций, упомянутые здесь, реализованы как перенаправленные события. All of the pointer events, gesture events and manipulation events mentioned here are implemented as routed events. Это значит, что события потенциально могут обрабатываться объектами, отличными от объектов, которые вызвали событие. This means that the event can potentially be handled by objects other than the one that originally raised the event. Последующие родительские объекты в дереве, такие как родительские контейнеры элементов UIElement или корень Page вашего приложения, могут обрабатывать эти события, даже если исходный элемент этого не делает. Successive parents in an object tree, such as the parent containers of a UIElement or the root Page of your app, can choose to handle these events even if the original element does not. И наоборот, любой объект, который обрабатывает событие, может пометить событие как обработанное, чтобы оно не обращалось к родительским элементам. Conversely, any object that does handle the event can mark the event handled so that it no longer reaches any parent element. Подробнее о концепции маршрутизированных событий и их влиянии на метод написания обработчиков для перенаправленных событий см. в разделе Общие сведения о событиях и перенаправленных событиях. For more info about the routed event concept and how it affects how you write handlers for routed events, see Events and routed events overview.











