在自定义视图中处理VoiceOver的“轻拍”

问题描述:

我正在审阅我们的应用程序以使其更易于使用,并且我遇到了自定义视图的问题。注意:我使用的是Xamarin/C#,但是这个希望不会改变任何东西,因为它使用了相同的API。在自定义视图中处理VoiceOver的“轻拍”

此自定义视图基本上模仿了“滑动解锁”手势。这当然不适用于VoiceOver,因为启用后,用户无法“滑动”,只能双击才能激活视图/按钮。

该视图为UIView子类,由儿童UIVIew s和UIPanGestureRecognizer组成,该子类从左到右捕获手势。

我开始通过增加无障碍信息父类:

IsAccessibilityElement = true; 
AccessibilityTraits = UIAccessibilityTrait.Button; 
AccessibilityLabel = "..."; 

的VoiceOver现在可以正确地看到滑块作为一个视图,而不是检查子视图。但是,我无法使用“VoiceOver双击”手势激活它。

我试过子类UIControl而不是UIView和覆盖sendAction(),但是这种方法不被调用。

我不想将UIAccessibilityTraitAllowsDirectInteraction特质设置为控件,因为这不利于渲染应用程序。

我能做些什么才能抓住“双击”,并执行用户滑动控件时应该完成的操作?

所以......毕竟这是一个Xamarin问题。

要确保VoiceOver能够与自定义控件配合使用,您必须符合UIAccessibilityAction非正式协议。在我的情况下,它是accessibilityActivate()

但是由于我使用Xamarin,我需要export该方法,以确保运行时可以看到我实现了一个非正式协议的方法。

[Export("accessibilityActivate")] 
public bool AccessiblityActivate() { 
    Console.WriteLine("It works!"); 
    return true; 
}