2013-12-20 2 views
1

Когда VoiceOver активен на устройстве iOS, жест одного пальца (влево или вправо) позволяет пользователям просматривать различные элементы в представлении. Есть ли способ определить, пользовался ли пользователь жестом салфетки с одним пальцем при использовании озвучивания?, когда VoiceOver включен, есть ли способ, которым приложение может обнаруживать одно пальцевое (левое право) салфетки?

ответ

7

Вы можете спросить любого из 2-х вещей:

  1. Вы хотите знать, когда пользователь VoiceOver успешно выпустил сингл-пальца влево/вправо жест VoiceOver - VoiceOver будет обрабатывать («украсть») жест вашего кода и сделать его вещь (переместите курсор VoiceOver на следующий/предыдущий элемент). Ближе всего вы можете получить уведомления о UIView, когда курсор VoiceOver приземляется на него или покидает его (см. UIAccessibilityFocus protocol).

  2. Вы хотите, чтобы часть вашего пользовательского интерфейса не подвергалась жестов VoiceOver (VoiceOver не будет обрабатывать («красть») жесты в этой области), чтобы вы могли сами выявлять жесты (в том числе проведите пальцем влево/справа) стандартным способом и обрабатывать их так, как вы хотите для своего приложения. Затем вы должны добавить свойство UIAccessibilityTraitAllowsDirectInteraction к собственности accessibilityTraits к соответствующему UIView (см. UIAccessibility protocol для более подробной информации). Ярким примером того, где это используется, является GarageBand для iOS - клавиатура для фортепиано или ударные имеют эту черту, чтобы пользователь VoiceOver мог играть на инструментах, не отключая VoiceOver.

+0

спасибо вам ответ, первый выглядит, как он будет работать с моим сценарием. Я продолжу читать документацию. – 3254523

0

В результате я создал категорию/расширение на UIView и переопределяющую доступностьElementDidBecomeFocused().

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

Swift пример:

extension UIView { 

//MARK: Accessibility 

override public func accessibilityElementDidBecomeFocused() { 
    super.accessibilityElementDidBecomeFocused() 

    UIApplication.sharedApplication().sendEvent(UIEvent()) 
} 
}