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 | Узел доступности ведет себя как прокручиваемый контейнер. |