我正在审核我们的应用以使其更易于访问,而且我的自定义视图存在问题。注意:我正在使用Xamarin / C#,但这有希望不会改变任何东西,因为它在引擎盖下使用相同的API。
此自定义视图基本上模仿“幻灯片解锁”手势。这当然不适用于VoiceOver,因为启用后,用户无法“滑动”,只需双击即可激活视图/按钮。
视图为UIView
子类,由子UIVIew
组成,以及UIPanGestureRecognizer
从左到右捕获手势。
我首先将辅助功能信息添加到父类:
IsAccessibilityElement = true;
AccessibilityTraits = UIAccessibilityTrait.Button;
AccessibilityLabel = "...";
VoiceOver现在可以正确地将滑块视为一个视图,而不是检查子视图。但是,我无法使用“VoiceOver双击”手势激活它。
我尝试了对UIControl
进行子类化而不是UIView
并覆盖sendAction(),但是没有调用此方法。
我不想将UIAccessibilityTraitAllowsDirectInteraction
特征设置为控件,因为这会使应用程序无法访问。
如果能够抓住“双击”并执行当用户滑动控件时应该执行的操作,我该怎么办?
答案 0 :(得分:1)
所以......毕竟这是一个Xamarin问题。
要确保VoiceOver适用于自定义控件,您必须符合UIAccessibilityAction 非正式协议。就我而言,它是accessibilityActivate()。
但是因为我正在使用Xamarin,所以我需要 export 该方法,以确保运行时可以看到我使用非正式协议实现了一个方法。
[Export("accessibilityActivate")]
public bool AccessiblityActivate() {
Console.WriteLine("It works!");
return true;
}