1

我有一张带有绘制项目的地图。地图处理触摸事件并确定触摸的项目,就好像它们是按钮一样。

我使地图成为一个容器,并实现了返回可访问元素的方法。对于每个项目,我创建一个 UIAccessibilityElement 子类的实例。

似乎 UIAccessibilityAction 协议对“点击”或“按下按钮”事件没有回调。那么我将如何用 UIAccessibilityElement 模仿 UIButton 的效果呢?

4

1 回答 1

0

假设您在 iOS 5 或 iOS 6 下运行,请考虑以下解决方法。它不是最优的,但会一直工作,直到有更好的方法:

  1. 创建一个本身不是可访问性元素的虚拟视图。
  2. 在这个视图中,在-touchesEnded:withEvent:.
  3. 将您的可访问性元素设置accessibilityActivationPoint为属于此虚拟视图的值。

当相应的可访问性元素被激活时,您的虚拟视图将接收触摸事件。如果 VoiceOver 和其他辅助技术未运行,请确保忽略虚拟视图中的触摸处理。

编辑:另一种不那么老套的方法是在您关注的视图上实现一个轻击手势识别器,将坐标从屏幕坐标转换-touchesEnded:withEvent:为屏幕坐标,然后针对可访问性元素的框架手动点击测试点。

于 2013-08-16T18:56:35.100 回答