在 UIMenuItem 上设置 accessibilityLabel
Set accessibilityLabel on UIMenuItem
我正在尝试设置 UIMenuItem
的 accessibilityLabel
,但似乎没有效果。不管怎样,VoiceOver 只会读出项目的标题:
let foo = UIMenuItem(title: "foo", action: #selector(doSomething))
item.isAccessibilityElement = true
item.accessibilityLabel = "bar"
对于此项,VoiceOver 读取 "foo" 而不是 "bar." 此外,accessibilityHint
似乎也被忽略了。
UIMenuItem
元素实际上是一个UICalloutBarButton
私有class包含一个UIButtonLabel
(iOS13) 并且,您无法自定义其 a11y 属性,即使您可以轻松地对其进行编码(非正式协议)。
这太疯狂了,因为为了销售 a11y 应用程序,您必须使其适应用户,而这里绝对不是这种情况。
但是,为了达到您的目标,可以实施如下解决方法:
- 使菜单控制器不可访问 (a11yTraits = .none).
- 获取菜单控制器框架(
menuFrame
属性)进行下一步。
- 创建一个可访问的元素,在显示时包裹菜单 (
UIAccessibilityElement
init + accessibilityFrameInContainerSpace
).
- 对于这个新的可访问元素,创建 a11y custom actions 匹配 [menuItems] ⟹ 的每个元素,您可以在此处提供 VoiceOver 标签。
最好为每个菜单项创建一个可访问的元素(然后提供更好的自定义)但是我没有找到获取框架的方法每个单独的项目。
而且,不幸的是,这个问题在过去 3 年里仍然存在。
⚠️⬛️◼️▪️编辑▪️◼️⬛️⚠️(2020/03/19)
我写了一个D开发者T技术S支持I ncident (no 731229763) 这个问题,这里是 Apple 的答案:
Our engineers have reviewed your request and have determined that you are experiencing a known issue for which there is no known workaround at this time.
我提交了一个错误报告,标题为 VoiceOver:accessibilityLabel 无法在 UIMenuItem 元素 上实现,引用 FB7623526。
现在,您知道为什么 accessibilityLabel 对 UIMenuItem 元素无用且没有影响。
我正在尝试设置 UIMenuItem
的 accessibilityLabel
,但似乎没有效果。不管怎样,VoiceOver 只会读出项目的标题:
let foo = UIMenuItem(title: "foo", action: #selector(doSomething))
item.isAccessibilityElement = true
item.accessibilityLabel = "bar"
对于此项,VoiceOver 读取 "foo" 而不是 "bar." 此外,accessibilityHint
似乎也被忽略了。
UIMenuItem
元素实际上是一个UICalloutBarButton
私有class包含一个UIButtonLabel
(iOS13) 并且,您无法自定义其 a11y 属性,即使您可以轻松地对其进行编码(非正式协议)。
这太疯狂了,因为为了销售 a11y 应用程序,您必须使其适应用户,而这里绝对不是这种情况。
但是,为了达到您的目标,可以实施如下解决方法:
- 使菜单控制器不可访问 (a11yTraits = .none).
- 获取菜单控制器框架(
menuFrame
属性)进行下一步。 - 创建一个可访问的元素,在显示时包裹菜单 (
UIAccessibilityElement
init +accessibilityFrameInContainerSpace
). - 对于这个新的可访问元素,创建 a11y custom actions 匹配 [menuItems] ⟹ 的每个元素,您可以在此处提供 VoiceOver 标签。
最好为每个菜单项创建一个可访问的元素(然后提供更好的自定义)但是我没有找到获取框架的方法每个单独的项目。
而且,不幸的是,这个问题在过去 3 年里仍然存在。
⚠️⬛️◼️▪️编辑▪️◼️⬛️⚠️(2020/03/19)
我写了一个D开发者T技术S支持I ncident (no 731229763) 这个问题,这里是 Apple 的答案:
Our engineers have reviewed your request and have determined that you are experiencing a known issue for which there is no known workaround at this time.
我提交了一个错误报告,标题为 VoiceOver:accessibilityLabel 无法在 UIMenuItem 元素 上实现,引用 FB7623526。
现在,您知道为什么 accessibilityLabel 对 UIMenuItem 元素无用且没有影响。