是否有人知道如何为多个元素的可访问性标签跨越单一值?我有两个标签,形成一个标题行,屏幕阅读器分别读取它们。我试过选择这两个并应用设置但它不起作用。
编辑:
这是我的故事板的视图......
但是,当屏幕阅读器到达此点时,它会读取第一个标签(不使用辅助功能值),然后读取第二个标签。
答案 0 :(得分:1)
我们可以使用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
检查苹果文档Whats new in accessibility。
sample app的链接,说明如何操作。
答案 1 :(得分:0)
我最终解决了这个问题...
我将第一个元素的标签值设置为“Transfection Search”,并清除并禁用第二个元素的辅助功能设置。这样,屏幕阅读器读取第一个项目值并完全跳过第二个项目。
它仍然只突出显示第一个元素,但我认为没有办法对元素进行分组并将可访问性属性应用于所有元素。
答案 2 :(得分:0)
我在UIStackView
中有两个标签-因此我在实际标签上禁用了可访问性,然后为堆栈视图启用了可访问性。在Xcode 10中,UIStackView
在Interface Builder中没有“可访问性”部分,因此我要做的是在 Identity Inspector>用户定义的运行时属性下添加两个自定义属性。我添加了一个设置为{{1}的名为Bool
的{{1}}和一个设置为所需文本的名为isAccessibilityElement
的{{1}}。当然,如果您希望通过编程方式对此进行更新,则可以将true
创建到String
并在代码中设置值。