2

有谁知道跨多个元素的可访问性标签的单个值的方法?我有两个标签,形成一个标题行,屏幕阅读器分别读取它们。我尝试同时选择两者并应用设置,但它不起作用。

编辑:

这是我的故事板的视图...

故事板可访问性设置

但是,当屏幕阅读器到达这一点时,它会读取第一个标签(不使用可访问性值),然后是第二个标签。

在此处输入图像描述

4

3 回答 3

2

我们可以使用类对元素进行分组,并使用属性UIAccessibilityElement提供要分组的元素的组合框架。accessibilityFrameInContainerSpace

//From Apple Docs
let profileElement = UIAccessibilityElement(accessibilityContainer: headerView)
profileElement.accessibilityLabel = profileNameLabel.text
profileElement.accessibilityValue = openPostsLabel.text
profileElement.accessibilityTraits |= UIAccessibilityTraitButton     // Tells VoiceOver to treat our new view like a button

let combinedLabelFrame = profileNameLabel.frame.union(openPostsLabel.frame)
let profileElementFrame = combinedLabelFrame.union(profileImageView.frame) //providing union of frames.
// This tells VoiceOver where the element is on screen so a user can find it as they touch around for elements
profileElement.accessibilityFrameInContainerSpace = profileElementFrame

检查 apple docs Whats new in 可访问性

示例应用程序的链接,说明如何执行此操作。

于 2017-12-08T07:28:30.960 回答
1

我有两个标签UIStackView- 所以我禁用了实际标签上的可访问性,然后启用了堆栈视图的可访问性。在 Xcode 10UIStackView中,Interface Builder 中没有“Accessibility”部分,所以我所做的是在Identity Inspector > User Defined Runtime Attributes下添加两个自定义属性。我向所需的文本添加了一个Bool命名isAccessibilityElementtrue和一个String命名集。accessibilityLabel当然,如果您希望它以编程方式更新,您可以创建一个IBOutletUIStackView在代码中设置值。

于 2018-10-30T10:51:15.533 回答
-2

我最终解决了这个问题......

我将第一个元素的标签值设置为“转染搜索”,并清除并禁用了第二个元素的可访问性设置。这样,屏幕阅读器会读取第一个项目的值并完全跳过第二个。

它仍然只突出显示第一个元素,但我认为没有办法对元素进行分组并将可访问性属性应用于所有元素。

于 2012-11-29T17:29:12.307 回答