VoiceOver:“ accessibilityActivationPoint”真的有用吗?

时间:2018-09-24 13:28:59

标签: ios accessibility voiceover

我尝试并理解了accessibilityActivationPoint的目的是什么,但徒劳无功。 激活有焦点的可访问元素时,该属性应指示VoiceOver当用户双击元素(Apple reference)时要激活的特定区域:对我来说,它始终是所选元素本身。

我知道VoiceOver会将所选元素视为一个块,无论其中的其他元素如何。双击以激活此块后,VoiceOver会调用accessibilityActivate来知道要执行的操作(Apple reference)。

1 /。我通过创建一个包含开关控件的自定义视图编写了许多测试。无论内部(或另一个开关控件上的外部)accessibilityActivationPoint的值是什么,开关控件的值都不会改变。是正确的用例还是我完全错了?

2 /。当我们在一个可访问元素内收集许多元素时,VoiceOver如何在无法定义的情况下激活其中一个?用accessibilityActivationPoint指向其中之一应该起作用吗?

就我个人而言,我无法使其正常运行,并认为我确实使accessibilityActivationPointaccessibilityActivate感到困惑。

我们将不胜感激,在此先感谢您。

1 个答案:

答案 0 :(得分:2)

是的,您对accessibilityActivateaccessibilityActivationPoint有正确的想法。请注意,为了使其正常工作,accessibilityActivationPoint必须是您试图在屏幕上的 坐标中激活的控件中的一个点(使用convert功能!)。

我认为简短的答案是“是”,回答您的第二个问题,但是,为了澄清有关何时可访问性激活点有用的困惑,我将对此进行更详细的介绍。

默认情况下(也称为AcessibilityActivate()的默认行为),当VoiceOver激活任何视图时,VoiceOver都会向该视图的中心发送一个“轻击手势”。可以通过更新视图上的accessibilityActivationPoint属性来更改此“轻击手势”的位置。下面,我有一个有关如何使用此属性的示例。

假设您在某些文本旁边有一个空白按钮(在下图中,该按钮是灰色框):

Screenshot of text next to a button without text on it.

出于可访问性的目的,您可能希望使包含按钮的整个视图和文本变为可访问性元素(以便VoiceOver用户可以轻松地了解该按钮与文本“ Worldspace Attest”相关联)。在下图中,我正在使用Accessibility Inspector来显示包含这两个元素的视图是Accessibility元素。

Image showing that the view holding the text and button is VoiceOver focusable.

在这些图像中请注意,该按钮不在视图的中心,而是在视图的中心。当您使用VoiceOver激活此视图时,该视图将不会选择该按钮。而是将“ tap”发送到视图的中心(这与点击文本相同,不会执行任何操作)。为了选择按钮,您必须将视图的accessibilityActivationPoint设置为按钮的屏幕坐标:

view.accessibilityActivationPoint = self.convert(button.center, to: UIApplication.shared.windows.first)

应该这样做,以便VoiceOver用户可以使用此按钮。

我希望此信息能消除对“辅助功能激活点”属性的任何混淆。我上面使用的示例可在“ Active Control Name”演示中的this repository中找到。