Kombinieren Sie UISwitch und UITableViewCell für die VoiceOver-Interaktion

8

Wenn Sie im Kalender beim Erstellen eines neuen Ereignisses auf die Zelle "Ganztägig" mit aktiviertem VoiceOver tippen, sagt Siri, dass die Schaltfläche "All Day switch" ein- / ausgeschaltet werden kann. Tippen Sie zweimal, um die Einstellung zu ändern. In der Tat wird durch Doppeltippen der Schalter umgeschaltet. Außerdem ist es nicht möglich, nur den Kippschalter selbst anzutippen - Sie müssen mit der Zelle selbst interagieren, um den Schalter umzuschalten, der Schalter selbst ist kein zugängliches Element.

In meiner App habe ich genau das selbe Setup mit einem Label und einem Schalter. Aber wenn ich auf die Zelle mit aktivierter VoiceOver tippe, liest es nur das Etikett, so dass der blinde Benutzer keine Ahnung hat, dass es in dieser Zelle einen Wechselschalter gibt. Wenn sie den Schalter selbst antippen, können sie mit ihm interagieren, also ist es das Gegenteil von dem Setup in der Kalender App.

Wie kann ich das gleiche Verhalten erhalten, das Apple implementiert hat? Ich brauche einen Weg, um den Schalter in die Zelle zu kombinieren, so dass VoiceOver beide nach dem Hervorheben der Zelle liest, dann, wenn sie zweimal tippen, sollte der Schalter umgeschaltet werden, und ich bin mir nicht sicher, wie dieses Setup durchgeführt werden kann. Danke!

    
Joey 30.06.2014, 20:43
quelle

3 Antworten

7

Um das gewünschte Verhalten zu implementieren, fügen Sie das UISwitch in contentView der Zelle programmatisch als accessoryView hinzu. Dann verhalten sich Zelle und Schalter genau wie erwartet, wenn Sie VoiceOver verwenden, genau wie im Kalender.

    
Joey 01.07.2014, 19:34
quelle
1

Sie sollten in der Lage sein, mit

eine benutzerdefinierte Beschreibung für die Zugänglichkeit der Zelle festzulegen %Vor%

Sie können benutzerdefinierte Gesten einrichten, wenn VoiceOver gemäß dieser Antwort ausgeführt wird:

Ссылка

Aber hier würden Sie keine benutzerdefinierten Gesten benötigen, stattdessen würde Ihr didSelectRowAtIndexPath den Schalter nur spiegeln, wenn UIAccessibilityIsVoiceOverRunning wahr ist.

    
nagem 30.06.2014 21:10
quelle
1

Ich möchte die Antwort von Joey näher erläutern und klarstellen, wie eine Lösung für diese Frage erreicht werden kann Code.

Erstellen Sie im tableView: cellForRowAtIndexPath: eine benutzerdefinierte UISwitch-Ansicht, und hängen Sie sie an die AccessoryView der Zelle an. Dies könnte in etwa wie folgt aussehen.

%Vor%

Die Zelle verhält sich nun wie jeder native iOS-Switch, der z. Einstellungen oder Kalender Doppeltippen auf die Zelle mit aktiviertem VoiceOver, schaltet nun den UISwitch (ein / aus) um und VoiceOver benachrichtigt den Benutzer automatisch über den Status des Schalters, zusammen mit einem Zugänglichkeitshinweis.

    
Stephan Sloth 28.08.2015 21:06
quelle