Ios 如何停止UISegmentedControl的语音广播?

Ios 如何停止UISegmentedControl的语音广播?,ios,accessibility,Ios,Accessibility,我的应用程序有一个包含两个按钮的UISegmentedControl。我能够访问每个按钮的可访问性字段;我遇到的问题是,对于分段控件的子视图,画外音读取子视图的可访问性属性,然后宣布视图在分段控件中的位置,因此第一个按钮的画外音声明是“Previous message.button.One of two.”第二个按钮是“下一条消息。按钮两个中的两个。” 如何防止这些公告的最后一部分(两部分中的一部分和两部分中的两部分)对画外音用户没有实际意义?您可以将UISegmentedControl子视图的

我的应用程序有一个包含两个按钮的
UISegmentedControl
。我能够访问每个按钮的可访问性字段;我遇到的问题是,对于分段控件的子视图,画外音读取子视图的可访问性属性,然后宣布视图在分段控件中的位置,因此第一个按钮的画外音声明是“Previous message.button.One of two.”第二个按钮是“下一条消息。按钮两个中的两个。”


如何防止这些公告的最后一部分(两部分中的一部分和两部分中的两部分)对画外音用户没有实际意义?

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

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

这些位置公告是
UISegmentedController
标准的一部分。它们确实有真正的意义。这让人知道按钮是相关的,而不是分开的。如果没有“两个按钮中的一个”,它们将在视障者面前显示为单独的按钮,而不是“单选按钮”“他们真的是。@rmaddy:这并不是说他们没有意义。此分段控制器位于工具栏上,其中包含不属于分段控制器的其他按钮。这两个按钮没有什么特别之处(从逻辑上讲,它们不是单选按钮),但早在我们担心可访问性之前,它们就作为分段控件实现了。我希望这些按钮的公布方式与其他按钮相同,以防止混淆。这两个按钮是特殊的。分段控件中的两个按钮是互斥的。一次只能选择一个。这就是公告中“两个中的一个”、“两个中的两个”部分的目的。独立按钮不需要这个。删除公告的这一部分将给语音用户带来更多的混乱。他们需要知道这些按钮是互斥的。@rmaddy:但是这里的按钮不是互斥的,事实上它们根本不是“可选择的”。它们只是“上一个”和“下一个”按钮。好的,那么分段控制是瞬时的。现在你的要求更有意义了。我想苹果仍然觉得这个声明的额外部分是有意义的。向苹果公司提交一份增强请求,要求即时分段控件不应在公告中添加额外部分。这就是诀窍,谢谢。不过有点痛苦,因为将按钮设置为UIAccessibilityTraitOne意味着它们不会被宣布为按钮,并且它们的启用/禁用状态也会被忽略,所以我只是以编程方式将这些属性添加到accessibilityLabel(例如,“Dimmed.Previous email.Button”)我没有详细调查,但我相信UIAccessibilityTraits的其他组合可以在不禁用有用部分的情况下为您提供所需的行为。嗯,我需要的最基本的事情是它将自己声明为“按钮”,因为所有其他按钮都有。但如果我只是将两个子视图设置为UIAccessibilityTraitButton,分段控件会执行“2个中的1”功能。没什么大不了的-享受你的慷慨。我在5.1上尝试过,在设置UIAccessibilityTraitButton(通过修改上面的代码)后,它可以工作,添加“Button”而不是“2个中的1”。你能分享更多关于你的具体设置的信息吗?我在iOS 6.0.1上运行。也许他们在5到6之间改变了这种行为。