我试图设置一个accessibilityLabel的UIMenuItem,它似乎没有任何效果。VoiceOver只是简单地读取项目的标题,不管是什么:
let foo = UIMenuItem(title: "foo", action: #selector(doSomething))
item.isAccessibilityElement = true
item.accessibilityLabel = "bar"对于这个项目,VoiceOver读的是"foo“而不是”bar“。此外,accessibilityHint似乎也被忽略了。
发布于 2020-02-20 10:14:17
UIMenuItem元素实际上是一个包含UIButtonLabel (iOS 13)的UICalloutBarButton私有类,而且不能自定义它的a11y属性,即使您可以轻松地对它进行编码(非正式协议)。
这太疯狂了,因为为了销售一个a11y应用程序,你必须让它适应用户,而这里的情况肯定不是这样。
但是,为了达到目标,可以按照以下方式实现解决方案:
menuFrame属性)。UIAccessibilityElement init + accessibilityFrameInContainerSpace__)。最好为每个menuItem创建一个可访问的元素(然后提供更好的定制),但我没有找到获取每个项目框架的方法。
不幸的是,这一问题在过去三年中仍然存在。
编辑▪️◼️⬛️⚠️(2020/03/19)
我为这个问题写了一个D开发器Technical Support In. (no 731229763),以下是苹果的答案:
我们的工程师已经审查了您的要求,并已确定您正在经历一个已知的问题,在这个时候没有已知的解决办法。
我提交了一份题为VoiceOver: accessibilityLabel无法在UIMenuItem元素上实现的bug报告,其中引用了FB7623526。
现在,您知道了为什么accessibilityLabel毫无用处,对UIMenuItem元素没有影响。
https://stackoverflow.com/questions/38252223
复制相似问题