我正在为盲人开发一个包含地图的应用程序。当VoiceOver被关闭时,我能够检测到UIGestureRecognizer的滑动和双击手势。例如:
UISwipeGestureRecognizer * swipeLeft=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeLeft:)];
swipeLeft.direction=UISwipeGestureRecognizerDirectionLeft;
[self.view addGestureRecognizer:swipeLeft];但是,当VoiceOver打开时,我无法为我所拥有的手势覆盖VoiceOver手势。我知道UIAccessibilityTraits允许直接交互的可能性:
[mySubView setAccessibilityTraits: UIAccessibilityTraitAllowsDirectInteraction];问题是,由于我有一张地图,当我允许直接交互时,我就开始与地图交互(平移,缩放等等)。但是,我的目标是保持地图的原样,但通过GestureRecognizers检测手势并执行与它们相关联的操作。
对怎么做有什么想法吗?
发布于 2017-01-14 20:13:25
VoiceOver的直接交互模型支持手势识别器。您所观察到的是与地图的手势处理冲突。考虑到地图视图及其触摸处理的复杂性,我建议采用两种替代方法之一。在这两种情况下,您可能都希望在地图视图上覆盖一个透明的UIView。
发布于 2020-08-25 10:10:12
是的,我解决了附加子视图并设置".isAccessibilityElement = true“和".accessibilityTraits = .allowsDirectInteraction”的问题,并将所有手势和覆盖触摸方法引用到添加的视图。
https://stackoverflow.com/questions/41645211
复制相似问题