我尝试并理解了accessibilityActivationPoint
的目的是什么,但徒劳无功。
激活有焦点的可访问元素时,该属性应指示VoiceOver当用户双击元素(Apple reference)时要激活的特定区域:对我来说,它始终是所选元素本身。
我知道VoiceOver会将所选元素视为一个块,无论其中的其他元素如何。双击以激活此块后,VoiceOver会调用accessibilityActivate
来知道要执行的操作(Apple reference)。
1 /。我通过创建一个包含开关控件的自定义视图编写了许多测试。无论内部(或另一个开关控件上的外部)accessibilityActivationPoint
的值是什么,开关控件的值都不会改变。是正确的用例还是我完全错了?
2 /。当我们在一个可访问元素内收集许多元素时,VoiceOver如何在无法定义的情况下激活其中一个?用accessibilityActivationPoint
指向其中之一应该起作用吗?
就我个人而言,我无法使其正常运行,并认为我确实使accessibilityActivationPoint
和accessibilityActivate
感到困惑。
我们将不胜感激,在此先感谢您。
答案 0 :(得分:2)
是的,您对accessibilityActivate
和accessibilityActivationPoint
有正确的想法。请注意,为了使其正常工作,accessibilityActivationPoint
必须是您试图在屏幕上的 坐标中激活的控件中的一个点(使用convert
功能!)。
我认为简短的答案是“是”,回答您的第二个问题,但是,为了澄清有关何时可访问性激活点有用的困惑,我将对此进行更详细的介绍。
默认情况下(也称为AcessibilityActivate()
的默认行为),当VoiceOver激活任何视图时,VoiceOver都会向该视图的中心发送一个“轻击手势”。可以通过更新视图上的accessibilityActivationPoint
属性来更改此“轻击手势”的位置。下面,我有一个有关如何使用此属性的示例。
假设您在某些文本旁边有一个空白按钮(在下图中,该按钮是灰色框):
出于可访问性的目的,您可能希望使包含按钮的整个视图和文本变为可访问性元素(以便VoiceOver用户可以轻松地了解该按钮与文本“ Worldspace Attest”相关联)。在下图中,我正在使用Accessibility Inspector来显示包含这两个元素的视图是Accessibility元素。
在这些图像中请注意,该按钮不在视图的中心,而是在视图的中心。当您使用VoiceOver激活此视图时,该视图将不会选择该按钮。而是将“ tap”发送到视图的中心(这与点击文本相同,不会执行任何操作)。为了选择按钮,您必须将视图的accessibilityActivationPoint
设置为按钮的屏幕坐标:
view.accessibilityActivationPoint = self.convert(button.center, to: UIApplication.shared.windows.first)
应该这样做,以便VoiceOver用户可以使用此按钮。
我希望此信息能消除对“辅助功能激活点”属性的任何混淆。我上面使用的示例可在“ Active Control Name”演示中的this repository中找到。