我正在尝试设置accessibilityLabel
的{{1}},但它似乎无效。无论如何,VoiceOver都会简单地读取项目的标题:
UIMenuItem
对于这个项目,VoiceOver读取" foo"而不是" bar。"此外, let foo = UIMenuItem(title: "foo", action: #selector(doSomething))
item.isAccessibilityElement = true
item.accessibilityLabel = "bar"
似乎也被忽略了。
答案 0 :(得分:0)
UIMenuItem
元素实际上是一个UICalloutBarButton
私有类,其中包含一个UIButtonLabel
(iOS 13),并且自定义其a11y属性,即使您可以轻松地对其(非正式协议)进行编码。
这太疯狂了,因为要出售a11y应用程序,您必须使其适应用户需求,这绝对不是这种情况。?
但是,可以通过以下方法来实现您的目标:
menuFrame
属性)进行下一步。UIAccessibilityElement
init + accessibilityFrameInContainerSpace
)时包装菜单的可访问元素。最好为每个menuItem 创建一个可访问元素(然后提供更好的自定义),但是我没有找到获取每个单独项目框架的方法。 ?
而且,不幸的是,该问题在最近3年中仍然存在。 ?
⚠️⬛️◼️?■️编辑▪️?◼️⬛️⚠️(2020/03/19)
我写了 D 护符 T 技术 S 支持我事件(无731229763)< / em>来解决此问题,这是Apple的答案:
我们的工程师已经审核了您的请求,并确定您遇到的已知问题目前尚无解决方法。
我提交了一个错误报告,标题为 VoiceOver:accessibilityLabel无法在UIMenuItem元素上实现,引用为 FB7623526 。
现在,您知道为什么 accessibilityLabel没有用,并且对UIMenuItem元素没有影响。 ?