Объекты доступности и иерархия доступности

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

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

Атрибуты

Объекты доступности описаны рядом атрибутов. Эти атрибуты включают тип объекта, места объекта в иерархии доступности (описанный в Иерархии Доступности), ее значение, ее размер и позиция на экране дисплея, и т.д. В Какао атрибуты идентифицируются NSString значения, такой как NSAccessibilityWindowAttribute и NSAccessibilityZoomButtonAttribute (см. Неофициальную Ссылку на протокол NSAccessibility для полного списка названий атрибута).

Каждый атрибут имеет значение, предоставляющее вспомогательному приложению информацию об элементе пользовательского интерфейса, который представляет объект доступности. Например, значение ролевого атрибута кнопки NSAccessibilityButtonRole и значение его включенного атрибута могло бы быть YES (если кнопка включена). Кроме того, много объектов доступности включают атрибут значения (NSAccessibilityValueAttribute) это содержит текущую стоимость объекта пользовательского интерфейса. Например, значение объекта текстового поля является содержанием текстового поля, и значение установленного переключателя true.

Значения атрибута всегда обрабатываются как объекты. Они должны быть любой объектами, соответствующими NSAccessibility протокол или один из следующих типов объектов:

NSValue объекты должны быть созданы с надлежащими удобными методами, такой как valueWithPoint:, быть должным образом распознанным и переданным к вспомогательному приложению. Значение атрибута может также быть nil, несмотря на то, что это не заставляет “Значение” ошибка быть замеченным вспомогательным приложением.

Вспомогательное приложение должно знать который атрибуты оказанная доступность поддержка объектов быть в состоянии точно представлять объект пользовательского интерфейса пользователю. Это вызвано тем, что вспомогательное приложение использует значения поддерживаемых атрибутов, чтобы управлять объектом и дать информацию о пользователе об этом. Объект доступности возвращает список своих поддерживаемых атрибутов в accessibilityAttributeNames метод. Когда вспомогательное приложение должно получить значение определенного атрибута, объект доступности возвращает его в accessibilityAttributeValue: метод.

Некоторые атрибуты только для чтения, таковы как роль, но другие, таковы как значение ползунка, может быть изменен вспомогательным приложением. Атрибут, значение которого является модифицируемым вспомогательным приложением, вызывают устанавливаемый. Модификация значений атрибута является одним способом, которым вспомогательное приложение может управлять пользовательским интерфейсом другого приложения (другой путь посредством действий, описанных в Действиях).

Объект доступности указывает, что значение определенного атрибута может быть изменено вспомогательным приложением путем возврата YES от accessibilityIsAttributeSettable: метод. Вспомогательное приложение изменяет значение определенного атрибута с помощью accessibilitySetValue:forAttribute: метод.

В NSAccessibility.h, Какао определяет большое количество констант для стандартных атрибутов, многие из которых относятся только к нескольким классам. Например, существует большой набор атрибутов, которые являются для использования с объектами тем текстом дескриптора. Несколько атрибутов, однако, требуются для каждого объекта доступности. Если необходимо создать объект доступности представлять элемент настроенного пользовательского интерфейса, Вы должны в минимуме реализовывать следующие атрибуты. (См., Делают Пользовательские Классы и Подклассы Доступными для подробных данных.)

Для получения дополнительной информации о требуемых и дополнительных атрибутах, связанных с каждой ролью, см. приложение “Роли и Связанные Атрибуты” в Обзоре Доступности для OS X.

Действия

Объектам доступности можно было связать действия с ними. Эти действия являются универсальными действиями, пользователь может взять объект пользовательского интерфейса, который представляет объект доступности. Это означает, что действия доступности не являются зависящими от контекста. Поскольку вспомогательное приложение управляет пользовательским интерфейсом Вашего приложения, действия обычно соответствуют единственному щелчку мышью или нажатию клавиши. Например, Кнопка печати поддерживает универсальное действие нажатия, не зависящее от контекста действие печати. Действия идентифицируются значениями NSString, такой как NSAccessibilityPressAction.

Объект доступности возвращает список своих поддерживаемых действий в accessibilityActionNames метод. Когда вспомогательное приложение должно заставить Ваше приложение выполнять определенное действие, это отправляет accessibilityPerformAction: сообщение. Когда Ваше приложение получает accessibilityPerformAction: сообщение, это выполняет требуемое действие таким же образом, это делает, когда запрос прибывает непосредственно из мыши или клавиатуры.

В NSAccessibility.h, Какао определяет небольшое количество констант для стандартных действий. Если Вы создаете (или расширяетесь), объект доступности, необходимо ограничить себя этими действиями. Если Вы не сделаете, то вспомогательное приложение, вероятно, будет неспособно обработать Ваше пользовательское действие.

Посмотрите Действия Поддержки для подробных данных о реализации действия.

Иерархия доступности

Объекты доступности располагаются в иерархию, представляющую пользовательский интерфейс Вашего приложения. Объект доступности прикладного уровня (представление объекта NSApplication) наверху иерархии, и ее дочерние элементы первого порядка являются объектами доступности, представляющими окна главного приложения и строку меню. Вспомогательное приложение может пересечь иерархию с помощью различных атрибутов, прежде всего NSAccessibilityParentAttribute и NSAccessibilityChildrenAttribute (см. Атрибуты для получения дополнительной информации об определенных атрибутах).

Вспомогательные приложения могут также переместиться через иерархию с помощью атрибутов, приводящих к объектам доступности, не связанным включением. Если, например, отображения приложения список документов в одном представлении и содержании выбранного документа в другом представлении, приложение может использовать NSAccessibilityLinkedUIElementsAttribute атрибут для соединения этих двух представлений. Используя значение этого атрибута, вспомогательное приложение может позволить пользователю переходить легко между связанными представлениями. Другие атрибуты, такой как NSAccessibilityMenuBarAttribute и NSAccessibilityTopLevelUIElementAttribute, обеспечьте прямой, удобный доступ к конкретным объектам в пользовательском интерфейсе приложения.

Иерархия доступности встроена в иерархию объектов, уже существующую в приложении Какао. Например, объект NSApplication верхнего уровня управляет набором окон. Вспомогательные доступы к приложениям эти окна путем выяснения у объекта доступности представление NSApplication возражают для значения NSAccessibilityWindowsAttribute атрибут. (Окна могут также быть получены путем запроса значения дочернего атрибута, но строка меню включена в это значение.) Каждое из этих окон содержит иерархию представления в чем, вид сверху окна, довольное представление, содержит любое число подпредставлений, каждое из которых может содержать еще больше подпредставлений и т.д. Эта иерархия может быть пересечена путем выяснения значение каждого объекта NSAccessibilityChildrenAttribute. У основания иерархии объекты, с которыми пользователь обычно взаимодействует, такие как кнопки и текстовые поля.

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

Объекты NSControl также часто скрыты. NSControl обычно имеет непосредственное отношение к объекту NSCell, реализующему большинство поведения управления. В этих случаях проигнорирован объект NSControl, и иерархия доступности спрыгивает с представления, содержащего управление к ячейке управления. Средства управления, которые могут представлять больше чем одну ячейку, однако, такую как NSMatrix или NSTableView, не проигнорированы.

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

Рисунок 1 сравнивает иерархию представления для окна и иерархию доступности для того же окна. Довольное представление и кнопочное управление (NSButton) проигнорированы объекты, которые находятся в иерархии представления, но не иерархии доступности. Иерархия доступности пропускает довольное представление и переходит непосредственно к его дочерним элементам, и кнопка заменяется ячейкой кнопки (NSButtonCell).

  Иерархия Представления рисунка 1 по сравнению с иерархией доступности
View hierarchy versus accessibility hierarchy

Объекты указывают, что должны быть проигнорированы путем реализации accessibilityIsIgnored метод и возврат YES. Фактически, возвраты реализации NSView по умолчанию YES. Для создания себя видимыми к вспомогательному приложению, поэтому, подклассы NSView должны переопределить accessibilityIsIgnored метод и возврат NO. Для получения дополнительной информации при работе с проигнорированными объектами, посмотрите Управление Иерархией Доступности.