2012-01-12 130 views
15

我们使用KIF进行功能测试,并使用元素的辅助功能标签来确定发送事件的位置。我目前正在尝试测试UISegmentedControl的行为,但为了这样做,我需要为控件的不同部分设置不同的可访问性标签。我如何设置特定细分的访问标签?如何为UISegmentedControl的特定段设置访问标签?

回答

10

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

首先,UIAccessibility Protocol Reference有accessibilityLabel下一张纸条,上面写着:

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

所以,我想知道是否可以在每个NSString对象上设置accessibilityLabel,并且可以使用它访问每个带有KIF的段。作为开始,您可以尝试创建几个字符串,设置其可访问标签,并使用[[UISegmentedControl alloc] initWithItems:myStringArray];填充它。

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

+0

不,这是行不通的。您必须使用已接受的答案来以编程方式自定义这些答案,而且这很丑陋。 – Josh 2012-10-20 17:09:03

+1

这适用于我,至少从iOS 5.1开始。我还没有进一步测试。如果我设置图像的accessibilityLabel,然后在UISegmentedControl中使用图像,它可以按预期工作。 – rmaddy 2013-03-11 04:06:28

+1

在'NSString'对象上设置accessibilityLabel ... mind = blown – 2015-01-11 19:10:08

8

UISegmentedControl的每个部分是UISegment类实例,从UIImageView的子类。您可以通过subviews属性UISegmentedControl访问这些实例,并尝试以编程方式为它们添加辅助功能。

+0

我试过了,它不适合我。我尝试了另一种方式,现在它适用于我。 [[segmentedControl imageForSegmentAtIndex:0] setAccessibilityLabel:@“Weapons”]; – UnchartedWorks 2014-04-08 08:59:43

14

正如顶点表示,

OBJ-C

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

迅速

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

一些建议,这样你就不会发疯,像我一样:

  1. 要在辅助功能模式中滚动滑动三个手指
  2. 段的索引向后比您预期的要向后,即最右边的段是第0个索引,而最靠左的是第n个索引,其中n是元素在UISegmentControl
+1

这在Swift中可能如何? – SwingerDinger 2015-04-28 12:33:17

+1

我添加了一个快速示例。我没有尝试过,但编译器接受了这个语法。对不起,迟交回复@SwingerDinger – anders 2015-10-27 14:08:39

+0

非常感谢老兄! – satheeshwaran 2016-12-15 11:39:43

8

这是一个老问题,但为了以防万一别人遭遇了这一点,我发现,段自动拥有指定作为其文本的可访问性标签的数量。因此,如果加入两种选择选项1和选项2的呼叫的到

[tester tapViewWithAccessibilityLabel:@"Option 2"]; 

成功选择的段。

+1

它不工作,我检查了无障碍检查员,并没有他们的标签 – Caipivara 2015-01-05 22:16:38

+0

OMG这应该是接受的答案,这么简单!适用于iOS 8的我。 – 2015-04-11 21:53:08

+0

工程,尽管我有一个问题:我的其中一个选项卡与段具有完全相同的文本。因此,它们都具有相同的辅助功能标签。 – user3099609 2016-03-01 12:10:02

1

另一种选择,如果不愿意设置无障碍环境头衔可能要计算每个段部件的poistion和使用

[tester tapScreenAtPoint:segementPosition]; 

触发动作

4

这是一个老问题,但为了以防万一任何人都遇到这种情况,我发现这些细分市场自动将可访问性标签指定为他们的文本。

而且斯图尔特的回答,我发现它编写测试用例时真正有用的点亮在模拟器“辅助检查”(设置 - >通用 - >辅助功能 - >辅助检查)。您会惊讶有多少元素已包含辅助功能标签,如标准的iOS界面元素甚至第三方框架。

Facebook log in button with accessibility label

注意:手势现在会有所不同 - 点击可查看辅助功能信息,双击选择。最小化“辅助功能检查器”窗口(通过点击X按钮)将使手势恢复正常。

+0

好的建议! – anders 2015-04-28 14:18:04

相关问题