VoiceOver: действительно ли «accessibilityActivationPoint» полезно? - PullRequest
0 голосов
/ 24 сентября 2018

Я попытался и понял, что может быть целью accessibilityActivationPoint, но тщетно.Когда активированный доступный элемент активирован, это свойство должно указывать VoiceOver на конкретную область, которую он будет активировать, когда пользователь дважды нажимает на элемент ( Apple, ссылка ): для меня это всегда сам выбранный элемент.

Я понял, что выбранный элемент рассматривается VoiceOver как блок независимо от других элементов внутри.После двойного касания для активации этого блока VoiceOver вызывает accessibilityActivate, чтобы узнать, что нужно выполнить ( справочник Apple ).

1 /.Я написал много тестов, создав пользовательское представление, включая управление переключателем.Независимо от значения accessibilityActivationPoint внутри (или снаружи на другом переключателе управления) значение управления переключателем никогда не изменяется.Это правильный вариант использования или я совершенно не прав?

2 /.Когда мы собираем много элементов внутри одного доступного элемента, как VoiceOver может активировать один из них, пока они недоступны по определению?Указание одного из них благодаря тому, что accessibilityActivationPoint должно работать?

Лично я не мог заставить это работать и думаю, что я действительно путаю accessibilityActivationPoint и accessibilityActivate.

Любая помощь будет оценена, спасибо заранее.

1 Ответ

0 голосов
/ 15 октября 2018

Да, у вас правильная идея с accessibilityActivate и accessibilityActivationPoint.Обратите внимание, что для того, чтобы он работал, accessibilityActivationPoint должна быть точкой внутри элемента управления, которую вы пытаетесь активировать в экранных координатах (используйте функцию convert!).

Я думаю, что короткий ответ «да», чтобы ответить на ваш второй вопрос, но просто для того, чтобы устранить путаницу в том, когда Точка активации доступности полезна, я более подробно расскажу об этом.

По умолчанию (то есть поведение по умолчанию для AcessibilityActivate()), когда VoiceOver активирует любой вид, VoiceOver отправляет «жест касания» в центр вида.Положение этого «жеста касания» можно изменить, обновив атрибут accessibilityActivationPoint в представлении.Ниже у меня есть пример того, как можно использовать это свойство.

Допустим, у вас есть пустая кнопка (на рисунке ниже кнопка представляет собой серый прямоугольник) рядом с текстом:

Screenshot of text next to a button without text on it.

В целях доступности, вы можете захотеть сделать весь вид, который содержит кнопку, и текст Элементом доступности (чтобы пользователи VoiceOver могли легко понять, что кнопкасвязан с текстом "Worldspace Attest").На изображении ниже я использую Accessibility Inspector, чтобы показать, что представление, содержащее оба эти элемента, является элементом Accessibility.

Image showing that the view holding the text and button is VoiceOver focusable.

Обратите внимание на эти изображениячто кнопка находится не в центре обзора, а справа.Когда вы активируете этот вид с помощью VoiceOver, он не будет выбирать кнопку;вместо этого он отправит «нажатие» в центр представления (что аналогично нажатию на текст, который ничего не делает).Чтобы выбрать кнопку, вы должны установить accessibilityActivationPoint вида в качестве экранных координат кнопки:

view.accessibilityActivationPoint = self.convert(button.center, to: UIApplication.shared.windows.first)

Это должно сделать так, чтобы эта кнопкаможет использоваться пользователем VoiceOver.

Надеюсь, эта информация прояснит любую путаницу в свойстве точки активации специальных возможностей.Пример, который я использовал выше, можно найти в этом репозитории в демонстрационной версии «Active Control Name».

...