我正在审核我们的应用程序,使其更易于访问,我的自定义视图出现问题 . 注意:我正在使用Xamarin / C#,但这有希望不会改变任何东西,因为它在引擎盖下使用相同的API .
此自定义视图基本上模仿“幻灯片解锁”手势 . 这当然不适用于VoiceOver,因为启用后,用户无法“滑动”,只需双击即可激活视图/按钮 .
视图是 UIView
子类,由子项 UIVIew
和 UIPanGestureRecognizer
组成,从左到右捕获手势 .
我首先将辅助功能信息添加到父类:
IsAccessibilityElement = true;
AccessibilityTraits = UIAccessibilityTrait.Button;
AccessibilityLabel = "...";
VoiceOver现在可以正确地将滑块视为一个视图,而不是检查子视图 . 但是,我无法使用“VoiceOver双击”手势激活它 .
我尝试了子类化 UIControl
而不是 UIView
并重写sendAction(),但是没有调用此方法 .
我不想将 UIAccessibilityTraitAllowsDirectInteraction
特性设置为控件,因为这会使应用程序无法访问 .
我能做些什么来捕获“双击”并执行当用户滑动控件时应该执行的操作?
1 回答
所以......毕竟这是一个Xamarin问题 .
要确保VoiceOver使用自定义控件,您必须符合UIAccessibilityAction informal protocol . 就我而言,它是accessibilityActivate() .
但是因为我正在使用Xamarin,所以我需要导出该方法,以确保运行时可以看到我从非正式协议中实现了一个方法 .