【问题标题】:How to stop VoiceOver announcement for UISegmentedControl?如何停止 UISegmentedControl 的 VoiceOver 公告?
【发布时间】:2013-04-02 23:21:13
【问题描述】:

我的应用有一个UISegmentedControl,其中包含两个按钮。我能够访问每个按钮的可访问性字段;我遇到的问题是,对于分段控件的子视图,VoiceOver 会读出子视图的可访问性属性,然后宣布视图在分段控件中的位置,因此第一个按钮的 VoiceOver 公告是“上一条消息。按钮。其中一个二。”对于第二个按钮,它是“下一条消息。按钮。两个中的两个。”

如何防止这些公告的最后一部分(“二选一”和“二选一”部分)对 VoiceOver 用户没有实际意义?

【问题讨论】:

  • 这些职位公告是UISegmentedController 标准的一部分。它们确实具有真正的意义。这让人们知道按钮是相关的而不是分开的。如果没有“二选一”,对于视障人士来说,它们将显示为单独的按钮,而不是真正的“单选按钮”。
  • @rmaddy:并不是说它们没有意义。此分段控制器位于工具栏上,其中包含不属于分段控制器的其他按钮。这两个按钮没有什么特别之处(从逻辑上讲,它们不是单选按钮),但早在我们担心可访问性之前,它们就被实现为分段控件。我希望这些按钮以与所有其他按钮相同的方式宣布,以防止混淆。
  • 这两个按钮很特别。分段控件中的两个按钮是互斥的。一次只能选择一个。这就是公告中“二之一”、“二之二”部分的目的。独立按钮不需要这个。删除公告的这一部分会导致用户的声音更加混乱。需要让他们知道这些按钮是互斥的。
  • @rmaddy:但是这里的按钮不是互斥的,事实上它们根本不是“可选择的”。它们只是“上一个”和“下一个”按钮。
  • OK,那么分段控制是瞬时的。现在你的请求更有意义了。我猜苹果仍然认为公告的额外部分是有道理的。向 Apple 提出增强请求,即瞬时分段控件不应添加公告的额外部分。

标签: ios accessibility


【解决方案1】:

您可以将UISegmentedControl 的子视图的accessibilityTraits 属性设置为UIAccessibilityTraitNone 以禁用VoiceOver 的“Tab X of Y”部分:

    for (UIView *thisView in self.segmentedControl.subviews) {
        [thisView setAccessibilityTraits:UIAccessibilityTraitNone];
    }

【讨论】:

  • 这就是诀窍,谢谢。不过有点痛苦,因为将按钮设置为 UIAccessibilityTraitNone 意味着它们不会被宣布为按钮,并且它们的启用/禁用状态也被忽略,所以我只是以编程方式将这些属性添加到 accessibilityLabel (例如“变暗。以前的电子邮件. 按钮。”
  • 我没有详细调查,但我相信 UIAccessibilityTraits 的其他一些组合可以在不禁用有用部分的情况下为您提供所需的行为。
  • 嗯,我需要的最基本的事情是让它宣布自己为“按钮”,因为所有其他按钮都这样做。但是,如果我只是将两个子视图设置为 UIAccessibilityTraitButton,则分段控件会执行“1 of 2”的操作。没什么大不了的 - 享受你的赏金。
  • 我在 5.1 上进行了尝试,在设置 UIAccessibilityTraitButton(通过修改上面的代码)后它可以工作,添加“Button”而不是“1 of 2”。你能分享更多关于你的确切设置的信息吗?
  • 我在 iOS 6.0.1 上运行。也许他们在 5 到 6 之间改变了这种行为。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-05
  • 2013-10-13
  • 1970-01-01
  • 2020-09-20
  • 1970-01-01
相关资源
最近更新 更多