如何为UISegmentedControl的特定段设置访问标签?

我们使用KIF进行functiontesting,并使用元素的可访问性标签来确定发送事件的位置。 我目前正在试图testing一个UISegmentedControl的行为,但为了做到这一点,我需要为控件的不同部分设置不同的可访问性标签。 我如何设置特定分段的访问标签?

我刚刚开始使用KIF,所以我没有testing过,但可能值得一试。 我相信我很快就会遇到同样的问题,所以我有兴趣听听它是否有效。

首先, UIAccessibility Protocol Reference在accessibilityLabel下面有一个注释:

“如果您提供的UIImage对象显示在UISegmentedControl中,您可以在每个图像上设置此属性,以确保这些段可以正常访问。

所以,我想知道是否可以在每个NSString对象上设置accessibilityLabel,并且可以使用它来使用KIF访问每个段。 作为开始,你可以尝试创build一些string,设置它们的可访问标签,并使用[[UISegmentedControl alloc] initWithItems:myStringArray]; 填充它。

请更新我们的进度。 我想听听这是怎么回事

正如Vertex所说,

OBJ-C

 [[[self.segmentOutlet subviews] objectAtIndex:3] setAccessibilityLabel:@"GENERAL_SEGMENT"]; 

迅速

 self.segmentOutlet.subviews[3].accessibilityLabel = "GENERAL_SEGMENT" 

一些build议,所以你不像我这样疯狂:

  1. 要在辅助function模式中滚动,请滑动三根手指
  2. 这些分段的索引是向后的,比你所期望的要大,即最右边的最右边的是第0个索引,最左边的是第n个索引,其中n是UISegmentControl

UISegmentedControl每个片段都是从UIImageView子类的UISegment类实例。 您可以通过UISegmentedControlsubviews属性访问这些实例,并尝试以编程方式为其添加辅助function。

这是一个古老的问题,但为了防止任何人遇到这种情况,我发现段自动具有指定为文本的辅助function标签。 所以如果两个选项被添加了选项1和选项2

 [tester tapViewWithAccessibilityLabel:@"Option 2"]; 

成功select了细分受众群

这是一个古老的问题,但为了防止任何人遇到这种情况,我发现段自动具有指定为文本的辅助function标签。

除了Stuart的回答,我发现在编写testing用例以打开模拟器上的“辅助function检查器”(设置 – >常规 – >辅助function – >辅助function检查器)时,它非常有用。 您会惊讶有多less元素已经包含辅助function标签,就像标准的iOS界面元素甚至第三方框架一样。

Facebook登录按钮与辅助功能标签

:手势现在会有所不同 – 点击查看辅助function信息,双击select。 最小化“辅助function检查器”窗口(通过点击Xbutton)将使手势恢复正常。

如果不愿意设置可访问性标签,另一种select可能是计算每个部分的用途和使用

 [tester tapScreenAtPoint:segementPosition]; 

触发行动