如何解决防止 UIButton showsTouchWhenHighlighted 改变 VoiceOver 描述
设置显示TouchWhenHighlighted,例如通过 IB 选项“Shows Touch On Highlight”,在没有标题的按钮上将改变 VoiceOver 描述。阅读辅助功能标签后,VoiceOver 会发出哔哔声并宣布图像的描述。有没有办法禁用这种行为?
解决方法
设置 accessibilityContainerType = UIAccessibilityContainerTypeSemanticGroup
。
将 accessibilityContainerType
值设置为 UIAccessibilityContainerTypeSemanticGroup
很有效,这很好 ? 但我不确定
这是这个元素的目标。
即使一个按钮我被视为一个容器,我理解这个实例属性处理
data-based containers 而不是。 ?
我调查了您的问题,这引起了我的好奇,但不幸的是,我无法通过 Apple API 找到合适的解决方案。
首先,我认为 this solution 可能会有所帮助,但正如您在评论中提到的那样,它不起作用……谢谢。 ?
显然,当使用 showsTouchWhenHighlighted
属性时,在呈现发光触摸的按钮内添加了一个视图 ⟹这是一个 UIButtonBarPressedIndicator 图像,您可以通过调试层次结构检测到以 Xcode 为例。 ?
这个新图像似乎将按钮图像的可访问性特征属性的默认值设为了默认值,即使您已经以编程方式对其进行了更改。 ?
所以,为了避免 VoiceOver 使用屏幕识别和读出一些无用的信息,我做了一些非常丑陋但有效的东西来达到你在 viewDidAppear
中的目标,例如 (参见“基本此 link) 的操作表:
myButton.subviews.forEach{$0.accessibilityTraits = .none}
由于实现的本机问题或任何人都可以理解的简单代码行而导致的坏破解,此解决方案从按钮中删除了所有可能的 VoiceOver 屏幕识别 ?...我仍然如果您能解释一下您的解决方案有效的原因,请感兴趣。 ?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。