How do I set the accessibility label for a particular segment of a UISegmentedControl?

Simon picture Simon · Jan 12, 2012 · Viewed 12.4k times · Source

We use KIF for our functional testing, and it uses the accessibility label of elements to determine where to send events. I'm currently trying to test the behaviour of a UISegmentedControl, but in order to do so I need to set different accessibility labels for the different segments of the control. How do I set the accessibility label for a particular segment?

Answer

anders picture anders · Mar 29, 2013

As Vertex said,

obj-c

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

swift

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

some advice so you don't go crazy like I did:

  1. To scroll in accessibility mode swipe three fingers
  2. The indexes of the segments are backwards than you would expect, i.e. the furthest segment to the right is the 0th index and the furthest to the left is the n'th index where n is the number of elements in the UISegmentControl