如何为一组 UIControl 设置单个 VoiceOver

How to set single VoiceOver for group of UIControls

我有一个 UIButton 和一个 UILabel 嵌入在 UIStackView 中,在 Interface Builder 中看起来像这样:

通过设置 UIStackViewisAccessibilityElementaccessibilityLabel 属性,我已经能够将 UIButtonUILabel 组合成一个 VoiceOver分组,类似这样:

然而,使用此配置,UIButton(上图中的灰色圆圈)变得不可点击,使控件无用。

有没有办法在保持此分组的同时仍允许 UIButton 可点击?

默认情况下,无障碍元素的 accessibilityActivationPoint 是其框架的中点。当按钮和标签组合成一个新元素时,它们组合框架的中点不再位于按钮的边界内。

您可以通过覆盖堆栈视图的 accessibilityActivationPoint 使其 returns 成为按钮的激活点来解决此问题。请注意,此 属性 在屏幕坐标中,因此如果视图在屏幕上移动(例如滚动),则仅设置一次是不够的。


此外,对于 "behave" 像辅助技术用户的按钮一样的分组元素,您应该给它 accessibilityTraits of a button. A complete list of all can be found here