如何使标签文本中的链接可用于画外音(可访问性)? (iOS, Xamarin)

How to make links within a label text be available for voice over (accessibility)? (iOS, Xamarin)

我有一种方法可以使用属性字符串(带下划线的范围)将 hyperlinks 插入 UILabel 文本的一部分。因此,一个标签可能有 none 个或多个 link。标签上有一个点击手势,我可以确定用户正在触摸文本的哪一部分并触发适当的动作。这部分已经过测试,可以正常工作。

当涉及到无障碍语音时,它的效果不是很好。唯一可行的方案是使用以下方法设置要访问的整个标签:

LabelMessage.IsAccessibilityElement = true;
LabelMessage.AccessibilityTraits = UIAccessibilityTrait.Link;

我的困难在于让用户能够点击带有画外音的标签内的 links。画外音不知道该标签内有 link。所以它将整个标签作为一个标签读取。我希望画外音阅读标签,但是当用户单击具有 link 的文本部分时,画外音将仅突出显示该部分文本,然后双击将执行该操作。我什至不知道这是可以实现的。任何关于此事的见解将不胜感激。

正如一位评论者所提到的,自定义操作将是一个很好的起点。您还可以将系统类型为 UIAccessibilityCustomRotor.SystemRotorType.link 的自定义转子添加到视图中,以便 VoiceOver 用户可以导航标签中的多个链接。

关于自定义转子的介绍,您可以观看https://developer.apple.com/videos/play/wwdc2020/10116/

最后,更改为 UITextView 也可能会自动解决此问题。

到目前为止,针对此问题的最佳解决方案是使用 UIAccessibilityCustomAction,正如@Junior Jiang 在其中一条评论中提到的那样。

转子绝对不是解决方案。但是,转子可用于 UITextView,因为它们具有 UITextRange 属性,可用于在整个文本中导航。

自定义操作比转子更易于使用,并且它们在标签级别工作。