如何为一组 UIControl 设置单个 VoiceOver
How to set single VoiceOver for group of UIControls
我有一个 UIButton
和一个 UILabel
嵌入在 UIStackView
中,在 Interface Builder 中看起来像这样:
通过设置 UIStackView
的 isAccessibilityElement
和 accessibilityLabel
属性,我已经能够将 UIButton
和 UILabel
组合成一个 VoiceOver分组,类似这样:
然而,使用此配置,UIButton
(上图中的灰色圆圈)变得不可点击,使控件无用。
有没有办法在保持此分组的同时仍允许 UIButton
可点击?
默认情况下,无障碍元素的 accessibilityActivationPoint
是其框架的中点。当按钮和标签组合成一个新元素时,它们组合框架的中点不再位于按钮的边界内。
您可以通过覆盖堆栈视图的 accessibilityActivationPoint
使其 returns 成为按钮的激活点来解决此问题。请注意,此 属性 在屏幕坐标中,因此如果视图在屏幕上移动(例如滚动),则仅设置一次是不够的。
此外,对于 "behave" 像辅助技术用户的按钮一样的分组元素,您应该给它 accessibilityTraits
of a button. A complete list of all can be found here。
我有一个 UIButton
和一个 UILabel
嵌入在 UIStackView
中,在 Interface Builder 中看起来像这样:
通过设置 UIStackView
的 isAccessibilityElement
和 accessibilityLabel
属性,我已经能够将 UIButton
和 UILabel
组合成一个 VoiceOver分组,类似这样:
然而,使用此配置,UIButton
(上图中的灰色圆圈)变得不可点击,使控件无用。
有没有办法在保持此分组的同时仍允许 UIButton
可点击?
默认情况下,无障碍元素的 accessibilityActivationPoint
是其框架的中点。当按钮和标签组合成一个新元素时,它们组合框架的中点不再位于按钮的边界内。
您可以通过覆盖堆栈视图的 accessibilityActivationPoint
使其 returns 成为按钮的激活点来解决此问题。请注意,此 属性 在屏幕坐标中,因此如果视图在屏幕上移动(例如滚动),则仅设置一次是不够的。
此外,对于 "behave" 像辅助技术用户的按钮一样的分组元素,您应该给它 accessibilityTraits
of a button. A complete list of all can be found here。