Ich fand heraus, dass ich zwar accessibilityLabel
von UISegmentedControl
s Segment setzen konnte (siehe: Wie setze ich die Zugänglichkeitslabel für ein bestimmtes Segment eines UISegmentedControls? ), konnte ich% co_de nicht einstellen %, was für mein Projekt genauso wichtig war. Ich muss ein Segment unabhängig von seinem Text und accessibilityIdentifier
für Automatisierungszwecke ausrichten.
Zum Beispiel der Code:
%Vor%ergibt:
%Vor%Es werden keine Ausnahmen ausgelöst.
Hat jemand Einblick, warum accessibilityLabel
implementiert ist, aber nicht accessibilityLabel
?
Ich habe dieses Problem gelöst, indem ich eine Swift-Erweiterung für XCUIElement
geschrieben habe, die eine neue Methode tap(at: UInt)
hinzugefügt hat. Diese Methode ruft die buttons
-Abfrage des Elements ab und sortiert die Ergebnisse basierend auf ihrer x-Position. Dadurch können wir angeben, welches Segment des UISegmentedControl
wir tippen möchten, anstatt sich auf den Schaltflächentext zu verlassen.
Ich habe den folgenden Code mit Xcode 5.1.1 und iOS Simulator 7.1 getestet:
%Vor% es funktionierte nicht für iPhone Retina (3.5-inch)
und iPhone Retina (4-inch)
, d. h. Ergebnis war:
aber es funktionierte für iPhone Retina (4-inch 64-bit)
, d. h. Ergebnis war:
Dann habe ich @[@"0", @"1"]
durch @[@"", @""]
in UISegmentedControl
Initialisierung ersetzt und der Code hat für alle erwähnten Plattformen funktioniert.
Es scheint, dass sowohl accessibilityIdentifier
als auch accessibilityLabel
implementiert sind, aber irgendwie stören die Anfangswerte von UISegmentedControl
mit accessibilityIdentifier
s seiner Segmente.
Ich hatte nur Bilder, ohne Etiketten, also habe ich den folgenden Code verwendet. Ich fand, dass die Indizes nicht der Reihenfolge auf dem Bildschirm entsprachen, also habe ich die anfänglichen accessibilityLabel
-Werte deaktiviert, die die Namen der Bilder waren, die ich in Interface Builder angegeben habe.
Tags und Links ios ios-ui-automation