2014-06-20 9 views
8

Ich habe eine Navigation Controller-Stack, wo eine der Ansichten hat einen dynamischen Titel.iOS erhalten UINavigationBar die Schaltfläche zurück, um die Barrierefreiheit Eigenschaften

Die View-Controller und ihre Titel gehen wie folgt aus:

Main  --> ItemsTableView --> ItemDetails 
Title:Main  Title: NN Items  Title: Details 

Da die iOS UINavigationController den Text der Schaltfläche „Zurück“ setzt der Titel des vorherigen Bildschirm zu sein, die „Zurück“ -Taste auf der Details Bildschirm sagt "< NN Items" wo NN ist eine sich dynamisch ändernde Zahl.

Ich versuche, einige iOS-UI-Automatisierung zu tun, aber die Zugänglichkeit Etikett/ID der Zurück-Taste wird vom System auf seine Schaltfläche Text festgelegt. Dies bedeutet, dass sich die Beschriftung der Schaltfläche "Zurück" auf dem Detailbildschirm dynamisch ändert und ich sie nicht in meinen Skripts finden kann.

Wenn ich einen Verweis auf das UIBarButtonItem bekommen könnte, dann könnte ich es accessibilityLabel oder accessibilityIdentifier von Code als eine feste Zeichenfolge, aber ich kann nicht herausfinden, wie dies tun?

All die Sachen, die ich habe in der Lage Referenzen zu finden Einstellung die Zurück-Taste, um eine benutzerdefinierte Taste über self.navigationItem.backBarButtonItem oder ähnlich, aber wenn ich diese Eigenschaft lesen ist es nil. Ich konnte nicht herausfinden, wie Zugriff auf den Standardartikel erhalten, ohne es zu ersetzen. Ich würde es vorziehen, den Knopf wenn möglich nicht zu ersetzen

+0

Gibt Ihnen self.navigationItem.leftBarButtonItem die Schaltfläche zurück? – Zhang

+0

Wenn ich es richtig verstehe ... Sie können dies http://stackoverflow.com/a/16786531/2365064 versuchen –

Antwort

6

Das war mir auch abgeneigt. Ich habe Xcode 7-UI-Tests geschrieben und versucht, eine generelle Art des Tippens auf die Zurück-Schaltfläche zu erstellen, ohne sie durch eine benutzerdefinierte Schaltfläche ersetzen zu müssen.

Das folgende ist, wie ich dies für Xcode 7 UI Tests gelöst habe - aber Sie können auch in der Lage sein, dies auch auf die UI-Automatisierung anzuwenden.

Ich entdeckte, dass (in Bezug auf mindestens Xcode 7 UI Tests) die Back-Bar-Taste Element, das vom System erstellt wird, besteht aus zwei Schaltflächen die ganze Sache ist eine Schaltfläche mit einem Accessibility-Label von dem Titel der Schaltfläche ist, und dann ist der Pfeil auch eine Schaltfläche mit einem Accessibility Label von "Back".

Solange also keine anderen Schaltflächen auf dem Bildschirm als "Zurück" gekennzeichnet sind, kann die Zurück-Schaltfläche über die Eingabehilfe "Zurück" aufgerufen werden. Wie so im Fall von UI-Tests:

[[app.buttons matchingIdentifier:@"Back"] elementBoundByIndex:0] 

Hier bin ich die erste Schaltfläche erhalten, die von „Back“ identifiziert werden kann. In meinem Fall könnte es nur zwei solche Knöpfe geben - den Pfeil oder den ganzen hinteren Knopf selbst (falls der Titel des hinteren Knopfes auch "Zurück" ist). Da beide Tasten im Wesentlichen gleich sind, ist es ausreichend, nur die erste Taste zu finden.

Verwandte Themen