Unity 6.3
0 онлайн 76 гостей 3 в системе
Вход

AccessibilityRole

перечисление

Описание

Варианты определения роли AccessibilityNode для экранных читателей.


Вы можете использовать значения в этом перечислении, чтобы установить AccessibilityNode.role. Это свойство присваивает семантическое значение узлу доступности, которое информирует экранные читатели о том, как взаимодействовать с ним и соответствующим образом объявлять его назначение.

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

Если визуальный элемент, представленный узлом, имеет роль, которая не охватывается ни одним из параметров перечисления, используйте значение по умолчанию, AccessibilityRole.None, и предоставляют информацию о назначении узла и его поведении в свойствах, таких как AccessibilityNode.label и AccessibilityNode.hint.

Дополнительные ресурсы:

  • Доступность мобильных приложений
  • Пример проекта с использованием доступности APIs

Следующий пример демонстрирует назначение AccessibilityRole элементу UI на основе его типа VisualElement.

// Attach this script to a UIDocument GameObject.
// This script demonstrates creating an AccessibilityNode for each child of a
// UIDocument's rootVisualElement and assigning an appropriate
// AccessibilityRole based on its VisualElement type.
// It also shows how to create custom controls to support AccessibilityRoles
// that don't have a corresponding VisualElement type. These can be used in
// UXML files and the UI Builder.
// To view the properties of the AccessibilityNodes in Playmode, go to
// Window > Accessibility > Hierarchy Viewer.

using System; using UnityEngine; using UnityEngine.Accessibility; using UnityEngine.UIElements;

namespace UnityEngine.Accessibility.Examples { public class AccessibilityManager : MonoBehaviour { // The active accessibility hierarchy. AccessibilityHierarchy m_Hierarchy;

void OnEnable() { // Create an accessibility hierarchy and set it as the active // hierarchy. m_Hierarchy = new AccessibilityHierarchy(); AssistiveSupport.activeHierarchy = m_Hierarchy;

// Add accessibility nodes to each child of the root VisualElement. AddNodesToChildren(); }

void AddNodesToChildren() { UIDocument document = GetComponent<UIDocument>(); if (document == null) { Debug.LogError("UIDocument is not attached to this GameObject."); return; }

// Loop through each child of the rootVisualElement of the UIDocument. foreach (var child in document.rootVisualElement.Children()) { // Create a node in the active hierarchy to represent the element. AccessibilityNode node = m_Hierarchy.AddNode();

// Set the node's label to the name of the VisualElement for clarity in // the Hierarchy Viewer. node.label = $"{child.name}";

// Assign an appropriate AccessibilityRole to the node based on the // type of VisualElement. AssignNodeRole(node, child); } }

void AssignNodeRole(AccessibilityNode node, VisualElement element) { // Match the VisualElement type to an AccessibilityRole using the "is" // operator to include subclasses. We check KeyboardKey before Button // because it's a subclass of Button with a distinct AccessibilityRole. if (element is KeyboardKey) node.role = AccessibilityRole.KeyboardKey; else if (element is Button) node.role = AccessibilityRole.Button; else if (element is Image) node.role = AccessibilityRole.Image; else if (element is Label) node.role = AccessibilityRole.StaticText; else if (element is SearchField) node.role = AccessibilityRole.SearchField; else if (element is Header) node.role = AccessibilityRole.Header; else if (element is TabView) node.role = AccessibilityRole.TabBar; else if (element is SliderInt || element is Slider) node.role = AccessibilityRole.Slider; else if (element is Toggle) node.role = AccessibilityRole.Toggle;

// The default value AccessibilityRole.None is used for elements that // don't have a corresponding role. } }

// The following classes define custom controls. They can be extended with // additional properties and methods as needed.

[UxmlElement] public partial class SearchField : TextField { }

[UxmlElement] public partial class KeyboardKey : Button { }

[UxmlElement] public partial class Header : VisualElement { } }

Свойства

Свойство Описание
NoneУзел доступности не имеет ни одной из предопределенных ролей.
ButtonУзел доступности ведет себя как кнопка.
ImageУзел доступности ведет себя как изображение.
StaticText Узел доступности ведёт себя как неизменяемый статический текст.
SearchFieldУзел доступности ведет себя как поле поиска.
KeyboardKeyУзел доступности ведет себя как клавишная комбинация.
HeaderУзел доступности ведет себя как заголовок, разделяющий содержимое на разделы, например, как заголовок панели навигации.
TabBarУзел доступности ведет себя как упорядоченный список вкладок.
SliderУзел доступности ведет себя как ползунок, который позволяет непрерывно настраивать диапазон значений.
ToggleУзел доступности ведет себя как переключатель.
ContainerУзел доступности является контейнером для других узлов (примерами контейнеров являются панели вкладок и представления с прокрутой).
TextFieldУзел доступности ведет себя как текстовое поле.
DropdownУзел доступности ведет себя как выпадающий список.
TabButtonУзел доступности ведет себя как элемент в упорядоченном списке вкладок.
ScrollViewУзел доступности ведет себя как прокручиваемый контейнер.