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

Posted

技术标签:

【中文标题】如何使标签文本中的链接可用于语音(可访问性)? (iOS,Xamarin)【英文标题】:How to make links within a label text be available for voice over (accessibility)? (iOS, Xamarin) 【发布时间】:2020-10-22 13:50:46 【问题描述】:

我有一种方法可以使用属性字符串(带下划线的范围)将超链接插入到 UILabel 文本的一部分中。所以一个标签可能没有,一个或多个链接。标签上有一个轻击手势,我可以在该手势上确定用户正在触摸文本的哪个部分并触发相应的操作。这部分已经过测试并且工作正常。

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

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

我的困难在于让用户能够通过画外音点击该标签内的链接。 Voice over 不知道该标签内有链接。所以它将整个标签读取为一个。我希望画外音来阅读标签,但是当用户单击具有链接的部分文本时,画外音只会突出显示文本的该部分,然后双击将执行操作。我什至不知道这是可以实现的。非常感谢您对此事的任何见解。

【问题讨论】:

你好,你的意思是VoiceOver只能读取UIlable的文字而不能调用点击事件吗? 也许,这个讨论会有所帮助:***.com/questions/39522364/… 你可以看看它。此外,UIAccessibilityCustomAction 可以对可访问对象执行自定义操作。 @JuniorJiang-MSFT 这是正确的。我会看看你发送的那个链接,似乎解决了我的问题 好吧,如果可以的话,稍后告诉我。 @JuniorJiang-MSFT 我什么都做不了。我不得不暂时摆脱这个错误,因为解决它需要很长时间。但我仍在寻找解决此问题的方法。我试图按照这些问题的提示进行操作,但到目前为止似乎没有任何效果;( 【参考方案1】:

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

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

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

【讨论】:

我将标签的特征设置为链接,但行为没有太大变化。我将尝试实现转子。必须识别标签中的链接,因为我的链接实现有点复杂。谢谢

以上是关于如何使标签文本中的链接可用于语音(可访问性)? (iOS,Xamarin)的主要内容,如果未能解决你的问题,请参考以下文章

如何使用辅助功能模式使可跨文本可点击

CALayer 的动态可访问性标签

EarlGrey 可以使用多个可访问性标签或文本

如何使用 iText 7 使下划线文本可访问

带有提示的编辑文本中的 Android 可访问性

如何使链接文本可点击以激活 Bootstrap 可折叠?