在自定义视图

时间:2017-08-08 08:33:03

标签: ios xamarin.ios accessibility voiceover uiaccessibility

我正在审核我们的应用以使其更易于访问,而且我的自定义视图存在问题。注意:我正在使用Xamarin / C#,但这有希望不会改变任何东西,因为它在引擎盖下使用相同的API。

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

视图为UIView子类,由子UIVIew组成,以及UIPanGestureRecognizer从左到右捕获手势。

我首先将辅助功能信息添加到父类:

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

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

我尝试了对UIControl进行子类化而不是UIView并覆盖sendAction(),但是没有调用此方法。

我不想将UIAccessibilityTraitAllowsDirectInteraction特征设置为控件,因为这会使应用程序无法访问。

如果能够抓住“双击”并执行当用户滑动控件时应该执行的操作,我该怎么办?

1 个答案:

答案 0 :(得分:1)

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

要确保VoiceOver适用于自定义控件,您必须符合UIAccessibilityAction 非正式协议。就我而言,它是accessibilityActivate()

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

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