旁白:'accessibilityActivationPoint' 真的有用吗?
VoiceOver : is 'accessibilityActivationPoint' really useful?
我尝试并理解了 accessibilityActivationPoint
的目的,但没有成功。
当激活一个有焦点的可访问元素时,属性 应该指示 VoiceOver 当用户双击该元素时它将激活的特定区域 (Apple reference):对我来说,它始终是所选元素本身。
我了解所选元素被 VoiceOver 视为一个块,无论内部的其他元素如何。一旦双击以激活此块,VoiceOver 将调用 accessibilityActivate
以了解要执行的操作 (Apple reference)。
1/。我通过创建包含开关控件的自定义视图编写了许多测试。无论 accessibilityActivationPoint
内部(或外部另一个开关控件)的值如何,开关控件的值永远不会改变。这是一个正确的用例还是我完全错了?
2/。当我们将许多元素聚集在一个可访问元素中时,VoiceOver 如何能够激活其中一个元素,而这些元素按定义是不可访问的?由于 accessibilityActivationPoint
指出其中之一应该有效吗?
就个人而言,我无法让它发挥作用,我认为我真的混淆了 accessibilityActivationPoint
和 accessibilityActivate
。
任何帮助将不胜感激,提前致谢。
是的,您对 accessibilityActivate
和 accessibilityActivationPoint
的想法是正确的。请注意,为了使其正常工作,accessibilityActivationPoint
需要是您尝试在 屏幕上 坐标中激活的控件中的一个点(使用 convert
函数!)。
我认为简短的回答是 "yes" 来回答你的第二个问题,但是,为了消除关于辅助功能激活点何时有用的困惑,我将对其进行更详细的介绍。
默认情况下(也就是 AcessibilityActivate()
的默认行为),当 VoiceOver 激活任何视图时,VoiceOver 将向视图的中心发送 "tap gesture"。 "tap gesture" 的位置可以通过更新视图上的 accessibilityActivationPoint
属性来更改。下面,我有一个如何使用此 属性 的示例。
假设您在一些文本旁边有一个空白按钮(在下图中,按钮是灰色框):
出于辅助功能的目的,您可能希望将包含按钮和文本的整个视图设为辅助元素(以便 VoiceOver 用户可以轻松理解按钮与文本相关联 "Worldspace Attest") .在下图中,我使用 Accessibility Inspector 来显示包含这两个元素的视图是一个 Accessibility Element。
请注意,在这些图像中,按钮不在视图的中央,而是在右侧。当您使用 VoiceOver 激活此视图时,该视图将不会 select 按钮;相反,它会将 "tap" 发送到视图的中心(这与点击文本相同,但不会执行任何操作)。为了 select 按钮,您必须将视图的 accessibilityActivationPoint
设置为按钮的屏幕坐标:
view.accessibilityActivationPoint = self.convert(button.center, to: UIApplication.shared.windows.first)
这应该可以让 VoiceOver 用户使用此按钮。
我希望这些信息能消除有关辅助功能激活点的任何困惑 属性。我在上面使用的示例可以在 "Active Control Name" 演示中的 this repository 中找到。
我尝试并理解了 accessibilityActivationPoint
的目的,但没有成功。
当激活一个有焦点的可访问元素时,属性 应该指示 VoiceOver 当用户双击该元素时它将激活的特定区域 (Apple reference):对我来说,它始终是所选元素本身。
我了解所选元素被 VoiceOver 视为一个块,无论内部的其他元素如何。一旦双击以激活此块,VoiceOver 将调用 accessibilityActivate
以了解要执行的操作 (Apple reference)。
1/。我通过创建包含开关控件的自定义视图编写了许多测试。无论 accessibilityActivationPoint
内部(或外部另一个开关控件)的值如何,开关控件的值永远不会改变。这是一个正确的用例还是我完全错了?
2/。当我们将许多元素聚集在一个可访问元素中时,VoiceOver 如何能够激活其中一个元素,而这些元素按定义是不可访问的?由于 accessibilityActivationPoint
指出其中之一应该有效吗?
就个人而言,我无法让它发挥作用,我认为我真的混淆了 accessibilityActivationPoint
和 accessibilityActivate
。
任何帮助将不胜感激,提前致谢。
是的,您对 accessibilityActivate
和 accessibilityActivationPoint
的想法是正确的。请注意,为了使其正常工作,accessibilityActivationPoint
需要是您尝试在 屏幕上 坐标中激活的控件中的一个点(使用 convert
函数!)。
我认为简短的回答是 "yes" 来回答你的第二个问题,但是,为了消除关于辅助功能激活点何时有用的困惑,我将对其进行更详细的介绍。
默认情况下(也就是 AcessibilityActivate()
的默认行为),当 VoiceOver 激活任何视图时,VoiceOver 将向视图的中心发送 "tap gesture"。 "tap gesture" 的位置可以通过更新视图上的 accessibilityActivationPoint
属性来更改。下面,我有一个如何使用此 属性 的示例。
假设您在一些文本旁边有一个空白按钮(在下图中,按钮是灰色框):
出于辅助功能的目的,您可能希望将包含按钮和文本的整个视图设为辅助元素(以便 VoiceOver 用户可以轻松理解按钮与文本相关联 "Worldspace Attest") .在下图中,我使用 Accessibility Inspector 来显示包含这两个元素的视图是一个 Accessibility Element。
请注意,在这些图像中,按钮不在视图的中央,而是在右侧。当您使用 VoiceOver 激活此视图时,该视图将不会 select 按钮;相反,它会将 "tap" 发送到视图的中心(这与点击文本相同,但不会执行任何操作)。为了 select 按钮,您必须将视图的 accessibilityActivationPoint
设置为按钮的屏幕坐标:
view.accessibilityActivationPoint = self.convert(button.center, to: UIApplication.shared.windows.first)
这应该可以让 VoiceOver 用户使用此按钮。
我希望这些信息能消除有关辅助功能激活点的任何困惑 属性。我在上面使用的示例可以在 "Active Control Name" 演示中的 this repository 中找到。