自定义滑块控件上的 UIAccessibility

Posted

技术标签:

【中文标题】自定义滑块控件上的 UIAccessibility【英文标题】:UIAccessibility on custom slider control 【发布时间】:2012-06-08 19:02:05 【问题描述】:

我有一个自定义控件(UIView 子类),它与锁定屏幕上的“滑动解锁”控件相同。

有没有一种方法可以在 Voiceover 选择视图时收到通知?此外,当它被选中时,手势识别器不会接收手势,从而使控件无用。

有什么建议吗?到目前为止,我已经设置了 isAccessibilityElement 和标签/提示。

【问题讨论】:

我知道您的问题已得到解答,但您应该看看 Apple 对 VoiceOver 的“滑动解锁”做了什么。他们把它变成“双击解锁”。否则,对于音量等普通滑块,您应该查看 accessibilityIncrementaccessibilityDecrement 方法。 【参考方案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的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 UIAccessibility 协议在 iOS 上的模式弹出窗口中捕获焦点?

自定义滑块控件

如何自定义滑块控件,如 wpf 中的音量

Qt编写自定义控件28-颜色滑块面板

如何将箭头控件设置为自定义按钮

光滑的滑块同步 - 断点上的自定义箭头