在自定义视图中处理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;
}