Dieser Artikel ist keine Codezeile, kein einzelner komplexer Begriff. Ich werde versuchen, dies so zu formulieren, dass selbst eine Person, die weit von der Entwicklung entfernt ist, es versteht.
Es geht um die Implementierung von Barrierefreiheit (Barrierefreiheit) in einer mobilen Anwendung.
Kurzer Hintergrund
Vor kurzem habe ich im Auftrag des Projekts Accessible Life begonnen, Yandex bei der Implementierung der Barrierefreiheit ihrer Navigationsanwendungen zu unterstützen.
Ich wurde mit der Tatsache konfrontiert, dass viele Dinge, die aus meiner Sicht offensichtlich sind, nicht in den Sinn kommen: unsichtbare Elemente auf dem Bildschirm, direkte Ausgabe von Sprachnachrichten über die API des Bildschirmzugriffsprogramms und so weiter.
Deshalb habe ich beschlossen, dies alles in einem separaten Artikel darzulegen.
Im Allgemeinen gehen wir.
Unsichtbare Gegenstände
Das Problem
Bei der Arbeit an Karten ist ein Problem aufgetreten:
Wenn Sie auf einen Bereich des Bildschirms mit einer Karte klicken, sollte die Anwendung den Modus wechseln (ich kann mich nicht sicher an die Details erinnern).
Für einen blinden Benutzer mit einem Bildschirmzugriffsprogramm wird diese scheinbar einfache Aktion unmöglich.
Tatsache ist, dass Bildschirmzugriffsprogramme nur bestimmte Objekte auf dem Bildschirm „sehen“: Schaltflächen, Textblöcke, Eingabefelder, Steuerelemente und Listen. In der Yandex.Maps-Anwendung wurde das Klicken auf die Karte nicht als Auswahl eines Objekts verarbeitet, sondern als Berührung eines bestimmten Bereichs des Bildschirms.
Lösung
Die Lösung ist ganz einfach: Erstellen einer Schaltfläche auf dem Bildschirm ohne Rahmen, mit transparentem Hintergrund und ohne sichtbaren Text (Nullschrift, die aus Sicht des Programmierers nicht so ästhetisch ansprechend ist, oder spezielle Attribute, die Text nur für Bildschirmzugriffsprogramme anzeigen, ohne ihn auf dem Bildschirm anzuzeigen).
Dieser Ansatz schockierte und überraschte Programmierer, aber in der Praxis hat alles geklappt, die Idee hat funktioniert und wird aktiv eingeführt, wo immer Sie direkte Klicks auf den Bildschirmbereich verarbeiten müssen.
Direkte Ausgabe von Sprachnachrichten über das Bildschirmzugriffsprogramm
Das Problem
Ein weiteres Problem bestand darin, dass manchmal zusätzliche Informationen nur für den blinden Benutzer angezeigt werden müssen. Popup-Meldungen beeinträchtigen in diesem Fall das Design und beeinträchtigen die anderen. Die Implementierung eines separaten Anwendungsmodus, in dem solche Meldungen angezeigt werden, ist umständlich und unlogisch.
Lösung
Die Lösung ist nicht so offensichtlich wie bei unsichtbaren Knöpfen, liegt aber auch an der Oberfläche.
Sie müssen die API des Bildschirmzugriffsprogramms selbst verwenden, um Nachrichten anzuzeigen. Der Programmcode sieht weniger umfangreich aus und zwingt den Entwickler nicht dazu, zusätzliche Anstrengungen zu unternehmen, um separate Modi, zusätzliche Einstellungen usw. zu erstellen.
Wenn Sie die Screenreader-API verwenden, müssen Sie übrigens nicht einmal überprüfen, ob sie aktiviert ist. Wenn das Programm ausgeführt wird, wird eine Nachricht mit dem vom Benutzer ausgewählten Sprachsynthesizer angezeigt. Und wenn das Programm ausgeschaltet ist, passiert einfach nichts und der durchschnittliche Benutzer wird nichts bemerken.
Teilen!
Das Problem
Dies ist eher eine Empfehlung als ein Life-Hack, aber ich muss dies erwähnen.
Denken Sie daran, dass auf dem Bildschirm nur Objekte für das Bildschirmzugriffsprogramm angezeigt werden.
Also ist auch die Art des Objekts wichtig. Der Text kann ihrer Meinung nach nicht angeklickt werden, aber die Schaltfläche kann nicht kopiert werden. Das heißt, wenn die Einstellungstabelle als großer Textblock implementiert ist, der Klicks auf verschiedene Teile von sich selbst „abfängt“, ist eine solche Tabelle für das Bildschirmzugriffsprogramm nicht verfügbar. Es wird gelesen, erlaubt aber keine Interaktion.
Lösung
Die Lösung ist ganz einfach: Verwenden Sie die Elemente wie vorgesehen.
Wenn es sich um eine Liste handeln soll, müssen Sie das Element verwenden, das die Liste im Code beschreibt.
Wenn es sich um eine Schaltfläche handelt, muss es sich um die Schaltfläche handeln. Wenn es sich um einen Schieberegler handelt, um einen Regler für etwas, sollte es ein Element des Schiebereglers sein und beim Ziehen kein Text mit Animation.
Fazit
Abschließend möchte ich sagen, dass sich die Entwicklung für Windows, obwohl nicht unbedingt erforderlich, von der Entwicklung für mobile Plattformen unterscheidet, sodass sich die Eingabehilfen für Windows von den Funktionen für Android / Ios unterscheiden.