首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在accessibilityLabel上设置UIMenuItem

在accessibilityLabel上设置UIMenuItem
EN

Stack Overflow用户
提问于 2016-07-07 17:56:51
回答 1查看 391关注 0票数 5

我试图设置一个accessibilityLabelUIMenuItem,它似乎没有任何效果。VoiceOver只是简单地读取项目的标题,不管是什么:

代码语言:javascript
复制
    let foo = UIMenuItem(title: "foo", action: #selector(doSomething))
    item.isAccessibilityElement = true
    item.accessibilityLabel = "bar"

对于这个项目,VoiceOver读的是"foo“而不是”bar“。此外,accessibilityHint似乎也被忽略了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-20 10:14:17

UIMenuItem元素实际上是一个包含UIButtonLabel (iOS 13)的UICalloutBarButton私有类,而且不能自定义它的a11y属性,即使您可以轻松地对它进行编码(非正式协议)。

这太疯狂了,因为为了销售一个a11y应用程序,你必须让它适应用户,而这里的情况肯定不是这样。

但是,为了达到目标,可以按照以下方式实现解决方案:

  • 使菜单控制器无法访问(a11yTraits = .none)。
  • 获取下一步的菜单控制器框架(__menuFrame属性)。
  • 创建一个可访问的元素,在显示时包装菜单(__UIAccessibilityElement init + accessibilityFrameInContainerSpace__)。
  • 对于这个新的可访问元素,创建与menuItems⟹的每个元素匹配的VoiceOver,您可以在这里提供VoiceOver标签。

最好为每个menuItem创建一个可访问的元素(然后提供更好的定制),但我没有找到获取每个项目框架的方法。

不幸的是,这一问题在过去三年中仍然存在。

编辑▪️◼️⬛️⚠️(2020/03/19)

我为这个问题写了一个D开发器Technical Support In. (no 731229763),以下是苹果的答案:

我们的工程师已经审查了您的要求,并已确定您正在经历一个已知的问题,在这个时候没有已知的解决办法。

我提交了一份题为VoiceOver: accessibilityLabel无法在UIMenuItem元素上实现的bug报告,其中引用了FB7623526

现在,您知道了为什么accessibilityLabel毫无用处,对UIMenuItem元素没有影响。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38252223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档