自定义滑块控件上的 UIAccessibility
Posted
技术标签:
【中文标题】自定义滑块控件上的 UIAccessibility【英文标题】:UIAccessibility on custom slider control 【发布时间】:2012-06-08 19:02:05 【问题描述】:我有一个自定义控件(UIView 子类),它与锁定屏幕上的“滑动解锁”控件相同。
有没有一种方法可以在 Voiceover 选择视图时收到通知?此外,当它被选中时,手势识别器不会接收手势,从而使控件无用。
有什么建议吗?到目前为止,我已经设置了 isAccessibilityElement 和标签/提示。
【问题讨论】:
我知道您的问题已得到解答,但您应该看看 Apple 对 VoiceOver 的“滑动解锁”做了什么。他们把它变成“双击解锁”。否则,对于音量等普通滑块,您应该查看accessibilityIncrement
和 accessibilityDecrement
方法。
【参考方案1】:
我必须做两件事才能让它发挥作用:
self.accessibilityTraits = UIAccessibilityTraitAllowsDirectInteraction;
并添加了仅在语音运行时触发的双击手势识别器
UITapGestureRecognizer *doubleTapGestureRecognizer = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(didDoubleTap:)];
doubleTapGestureRecognizer.numberOfTapsRequired = 2;
[self addGestureRecognizer:doubleTapGestureRecognizer];
- (void)didDoubleTap:(UITapGestureRecognizer*)tapGesture
if(UIAccessibilityIsVoiceOverRunning())
[self slideHandleToFinish];
【讨论】:
这对我也有用。设置 UIAccessibilityTraitAllowsDirectInteraction 使 VoiceOver 能够接收我的 UISwipeGestureRecognizer。 谢谢,苹果说我们只需要添加以前的accessibilityTrais,否则我们会丢失它们(在我的情况下我丢失了很多),如下所示: self.accessibilityTraits = UIAccessibilityTraitAllowsDirectInteraction | [超级可访问性特征];请注意 UIAccessibilityConstants.h 作为 UIAccessibilityTraits 的注释:“在设置可访问性特征时,将自定义特征与 [super accessibilityTraits] 组合。自定义特征的错误组合将导致可访问性客户端错误地解释元素。”以上是关于自定义滑块控件上的 UIAccessibility的主要内容,如果未能解决你的问题,请参考以下文章