gpt4 book ai didi

ios - 在自定义 View 上处理来自 VoiceOver 的 "tap"

转载 作者:行者123 更新时间:2023-11-29 11:42:44 25 4
gpt4 key购买 nike

我正在审查我们的应用程序以使其更易于访问,但我对自定义 View 有疑问。注意:我使用的是 Xamarin/C#,但希望这不会改变任何东西,因为它在后台使用相同的 API。

这个自定义 View 基本上模仿了“滑动解锁”手势。这当然不适用于 VoiceOver,因为当启用它时,用户不能“滑动”而只能双击以激活 View /按钮。

View 是 UIView 的子类,由子 UIVIew 和一个从左到右捕捉手势的 UIPanGestureRecognizer 组成。

我首先向父类添加无障碍信息:

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

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

我尝试继承 UIControl 而不是 UIView 并覆盖 sendAction() , 但是这个方法没有被调用。

我不想为控件设置 UIAccessibilityTraitAllowsDirectInteraction 特征,因为这不利于呈现应用程序的可访问性。

我该怎么做才能捕捉到“双击”并执行用户滑动控件时应该执行的操作?

最佳答案

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

为确保 VoiceOver 与自定义控件一起工作,您必须遵守 UIAccessibilityAction 非正式协议(protocol)。在我的例子中是 accessibilityActivate() .

但由于我使用的是 Xamarin,我需要导出该方法,以确保运行时可以看到我实现了来自非正式协议(protocol)的方法。

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

关于ios - 在自定义 View 上处理来自 VoiceOver 的 "tap",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45563265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com