2017-02-15 14 views
1

У меня есть стандарт UIViewController и зарегистрируйте UISwipeGestureRecognizer, делегируйте его мне в viewDidLoad переопределить.Регистрация действий UIGestureRecognizer в голосе за

Жест регистрирует и правильно вызывает соответствующие действия, однако это не происходит, когда включен режим голосовой связи.

Действительно ли UIGestureRecognizer доступен только для стандартного использования в iOS? Есть ли способ получить голос, чтобы зарегистрировать эти жесты, будь то двойные краны, пальцы, щепотку/масштабирование и т. Д.?

+0

Отличный вопрос! Я предполагаю, что нет, так как жесты * физически *, а не вокальные. Но мне интересно узнать, есть ли у кого-то более конструктивные .... – dfd

+0

Посмотрите эту ссылку Надеюсь, что это поможет вам https://www.apple.com/voiceover/info/guide/_1137.html –

ответ

0

Разобрался, как это работает, и я думаю, что стоит поделиться этим:

После оглядывая классов UIView, а также UIAccessibilityTraits, все UIViews и их подклассы имеют битовую маску, используя различные UIAccessibilityTraits, которые могут быть использованы для : -Designate стандартное поведение UIView или любого класса, использующего протокол UIAccessibility. -Allow различные конфигурации, такие как скорость обновления, позволяя слайдер типа поведения и т.д.

Вот ссылка на все доступные черты: https://developer.apple.com/reference/uikit/uiaccessibility/accessibility_traits

Для моего конкретного случая, я использовал UIAccessibilityTraitAllowsDirectInteraction и UIAccessibilityTraitUpdatesFrequently. Все UIGestureRecognizers затем соответствующим образом зарегистрированы, то ли сенсорные, краны, щепотка и т.д.

Они должны быть определены как битовая маска, поэтому если вам нужен элемент, чтобы иметь эти свойства, введите:

myView.UIAccessibilityTraits = UIAccessibilityTraitAllowsDirectInteraction | UIAccessibilityTraitUpdatesFreequo

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

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