Freigeben über


Erstellen barrierefreier Apps mit semantischen Eigenschaften

Bei der Semantik für Barrierefreiheit geht es darum, Erlebnisse zu schaffen, die Ihre Apps einschließlich für Menschen machen, die Technologie in einem breiten Spektrum von Umgebungen nutzen und sich Ihrer Benutzeroberfläche mit einer Reihe von Bedürfnissen und Erfahrungen nähern. In vielen Situationen können die gesetzlichen Anforderungen an die Barrierefreiheit den Entwicklern einen Anstoß geben, sich mit Fragen der Barrierefreiheit zu befassen. Unabhängig davon ist es ratsam, inklusive und barrierefreie Apps zu erstellen, damit Ihre Apps die größtmögliche Zielgruppe erreichen.

Die Richtlinien für barrierefreie Webinhalte (Web Content Accessibility Guidelines, WCAG) sind der weltweite Standard für die Barrierefreiheit und der gesetzliche Maßstab für Web und Handy. Diese Richtlinien beschreiben die verschiedenen Möglichkeiten, wie Apps für alle verständlicher, funktionsfähiger, begreifbarer und robuster gestaltet werden können.

Viele Anforderungen an die Barrierefreiheit werden von Hilfstechnologieprodukten erfüllt, die von Benutzern oder von Tools und Einstellungen des Betriebssystems installiert wurden. Dazu gehören Funktionen wie Bildschirmleser, Bildschirmvergrößerung und kontrastreiche Einstellungen.

Sprachausgaben enthält in der Regel auditorische Beschreibungen von Steuerelementen, die auf dem Bildschirm angezeigt werden. Diese Beschreibungen helfen den Benutzern bei der Navigation durch die App und enthalten Verweise auf Steuerelemente, wie etwa Bilder, die keine Eingabe oder Text enthalten. Bildschirmleser werden häufig mithilfe von Gesten über einen Touchscreen, ein Trackpad oder eine Tastatur gesteuert. Informationen zum Aktivieren von Sprachausgaben finden Sie unter Aktivieren von Bildschirmlesern.

Betriebssysteme verfügen über eigene Bildschirmleser mit eigenem Verhalten und eigener Konfiguration. Die meisten Bildschirmleser lesen zum Beispiel den einem Steuerelement zugeordneten Text, wenn dieses fokussiert wird. So können sich Benutzer orientieren, wenn sie zwischen den Steuerelementen auf der Seite wechseln. Einige Bildschirmleser lesen auch die komplette Benutzeroberfläche der Anwendung, wenn eine Seite angezeigt wird. Dadurch können Benutzer alle auf der Seite verfügbaren Informationsinhalte erhalten, bevor sie darin navigieren.

Die meisten Sprachausgaben lesen automatisch jeden Text, der einem Steuerelement zugeordnet ist, das den Fokus der Barrierefreiheit erhält. Das bedeutet, dass Elemente wie etwa Label oder Button, für welche die Text Eigenschaft festgelegt ist, für Benutzer verfügbar sind. Allerdings können die Elemente Image, ImageButton, ActivityIndicator und andere nicht in die Barrierefreiheitsstruktur aufgenommen werden, da ihnen kein Text zugeordnet ist.

NET Multiplatform App UI (.NET MAUI) unterstützt zwei Ansätze, um den Zugriff auf die Zugänglichkeit der zugrunde liegenden Plattform zu ermöglichen. Semantische Eigenschaften sind der Ansatz von .NET MAUI, um Werte für die Zugänglichkeit in Anwendungen bereitzustellen, und sind der empfohlene Ansatz. Automatisierungseigenschaften sind der Xamarin.Forms-Ansatz zur Bereitstellung von Zugänglichkeitswerten in Apps und wurden durch semantische Eigenschaften ersetzt. In beiden Fällen entspricht die Standardzugriffsreihenfolge der Steuerelemente der Reihenfolge, in der sie in XAML aufgelistet oder dem Layout hinzugefügt werden. Verschiedene Layouts können jedoch zusätzliche Faktoren aufweisen, die die Reihenfolge der Erreichbarkeit beeinflussen. Die Reihenfolge der Zugänglichkeit von StackLayout basiert beispielsweise auch auf seiner Ausrichtung, und die Reihenfolge der Zugänglichkeit von Grid basiert auf seiner Zeilen- und Spaltenanordnung. Weitere Informationen zur Reihenfolge von Inhalten finden Sie im Xamarin Blog unter Meaningful Content Ordering.

Hinweis

Wenn eine WebView eine zugängliche Website anzeigt, ist sie auch in einer .NET MAUI-Anwendung zugänglich. Wenn ein WebView eine Website anzeigt, auf die nicht zugegriffen werden kann, ist sie auch in einer .NET MAUI-Anwendung nicht zugänglich.

Semantische Eigenschaften

Semantische Eigenschaften werden verwendet, um Informationen darüber zu definieren, welche Steuerelemente den Fokus der Erreichbarkeit erhalten sollen und welcher Text dem Benutzer vorgelesen werden soll. Semantische Eigenschaften sind angefügte Eigenschaften, die jedem Element hinzugefügt werden können, um die zugrunde liegenden Zugänglichkeits APIs der Plattform festzulegen.

Wichtig

Semantische Eigenschaften versuchen nicht, das entsprechende Verhalten auf jeder Plattform zu erzwingen. Stattdessen verlassen sie sich auf die von jeder Plattform gebotene Zugänglichkeit.

Die SemanticProperties-Klasse definiert die folgenden angefügten Eigenschaften:

  • Description, vom Typ string, die eine Beschreibung darstellt, die vom Bildschirmleser laut vorgelesen wird. Weitere Informationen finden Sie unter Beschreibung.
  • Hint, vom Typ string, der ähnlich wie Description ist, aber zusätzlichen Kontext wie etwa den Zweck eines Steuerelements liefert. Weitere Informationen finden Sie unter Hinweise.
  • HeadingLevel, vom Typ SemanticHeadingLevel, mit dem ein Element als Überschrift gekennzeichnet werden kann, um die Benutzeroberfläche zu organisieren und die Navigation zu erleichtern. Weitere Informationen finden Sie unter Überschriftenebenen.

Diese angefügten Eigenschaften legen plattformspezifische Zugänglichkeitswerte so fest, dass ein Bildschirmleser über das Element sprechen kann. Weitere Informationen zu angefügten Eigenschaften finden Sie unter Angefügte Eigenschaften.

Beschreibung

Die Description angefügte Eigenschaft entspricht einer kurzen beschreibenden string , die ein Bildschirmleser verwendet, um ein Element anzukündigen. Diese Eigenschaft sollte für Elemente festgelegt werden, deren Bedeutung wichtig für das Verstehen des Inhalts oder die Interaktion mit der Benutzeroberfläche ist. Das Festlegen dieser Eigenschaft kann in XAML erfolgen:

<Image Source="dotnet_bot.png"
       SemanticProperties.Description="Cute dot net bot waving hi to you!" />

Alternativ kann sie in C# folgendermaßen festgelegt werden:

Image image = new Image { Source = "dotnet_bot.png" };
SemanticProperties.SetDescription(image, "Cute dot net bot waving hi to you!");

Beachten Sie, dass auch die SetValue Methode verwendet werden kann, um die angefügte Description Eigenschaft festzulegen:

image.SetValue(SemanticProperties.DescriptionProperty, "Cute dot net bot waving hi to you!");

Die Zugänglichkeits-Informationen für ein Element können auch für ein anderes Element definiert werden. Zum Beispiel kann eine Label-Klasse neben einer Switch-Klasse verwendet werden, um zu beschreiben, wofür die Switch-Klasse steht. Dies kann in XAML folgendermaßen erfüllt werden:

<Label x:Name="label"
       Text="Enable dark mode: " />
<Switch SemanticProperties.Description="{Binding Source={x:Reference label} Path=Text}" />

Alternativ kann es in C# folgendermaßen festgelegt werden:

Label label = new Label
{
    Text = "Enable dark mode: "
};
Switch mySwitch = new Switch();
SemanticProperties.SetDescription(mySwitch, label.Text);

Warnung

  • Vermeiden Sie das Festlegen der Description angefügten Eigenschaft für ein Label. Dadurch wird die Text Eigenschaft, die vom Bioldschirmleser gesprochen wird, beendet. Dies liegt daran, dass der visuelle Text im Idealfall mit dem vom Bildschirmleser vorgelesenen Text übereinstimmen sollte.
  • Vermeiden Sie das Festlegen der angefügten Description Eigenschaft für ein Entry oder Editor unter Android. Andernfalls funktionieren die Talkback-Aktionen nicht mehr. Verwenden Sie stattdessen entweder die Placeholder Eigenschaft oder die angefügte Hint Eigenschaft.
  • Wenn Sie unter iOS die Description Eigenschaft für ein Steuerelement festlegen, das untergeordnete Elemente enthält, kann die Sprachausgabe die untergeordneten Elemente nicht erreichen. Dies liegt daran, dass iOS keine Zugänglichkeits-Features bereitstellt, die die Navigation von einem übergeordneten Element in ein untergeordnetes Element ermöglichen.

Hinweis

Die angefügte Hint Eigenschaft stellt eine string dar, die zusätzlichen Kontext für die angefügte Description Eigenschaft bietet, wie etwa den Zweck eines Steuerelements. Das Festlegen dieser Eigenschaft kann in XAML erfolgen:

<Image Source="like.png"
       SemanticProperties.Description="Like"
       SemanticProperties.Hint="Like this post." />

Alternativ kann sie in C# folgendermaßen festgelegt werden:

Image image = new Image { Source = "like.png" };
SemanticProperties.SetDescription(image, "Like");
SemanticProperties.SetHint(image, "Like this post.");

Beachten Sie, dass auch die SetValue Methode verwendet werden kann, um die Hint angefügte Eigenschaft festzulegen:

image.SetValue(SemanticProperties.HintProperty, "Like this post.");

Unter Android verhält sich diese Eigenschaft je nach dem Steuerelement, an welches sie angefügt ist, etwas anders. Bei Steuerelementen ohne Textwerte, wie etwa Switch und CheckBox, zeigen die Steuerelemente den Hinweis mit dem Steuerelement an. Bei Steuerelementen mit Textwerten wird der Hinweis jedoch nicht angezeigt, sondern nach dem Textwert gelesen.

Warnung

Die Hint Eigenschaft steht im Konflikt mit der Entry.Placeholder Eigenschaft unter Android, die beide der gleichen Plattformeigenschaft zugeordnet sind. Es wird daher nicht empfohlen, einen anderen Hint Wert als den Entry.Placeholder Wert festzulegen.

Überschriftenebenen

Mit der angefügten Eigenschaft HeadingLevel kann ein Element als Überschrift markiert werden, um die Benutzeroberfläche zu organisieren und die Navigation zu erleichtern. Einige Bildschirmleser ermöglichen es Benutzenden, schnell zwischen Überschriften zu wechseln.

Überschriften haben eine Ebene von 1 bis 9 und werden durch die SemanticHeadingLevel Aufzählung dargestellt, welche die None definiert, hingegen Level1 bis Level9 durch Mitglieder.

Wichtig

Während Windows 9 Ebenen von Überschriften bietet, gibt es bei Android und iOS nur eine einzige Überschrift. Wenn also HeadingLevel unter Windows eingestellt wird, entspricht dies der richtigen Überschriftsebene. Bei der Einstellung auf Android und iOS wird jedoch eine einzelne Überschriftsebene zugeordnet.

Das folgende Codebeispiel zeigt, wie diese angefügte Eigenschaft festgelegt wird:

<Label Text="Get started with .NET MAUI"
       SemanticProperties.HeadingLevel="Level1" />
<Label Text="Paragraphs of text go here." />
<Label Text="Installation"
       SemanticProperties.HeadingLevel="Level2" />
<Label Text="Paragraphs of text go here." />    
<Label Text="Build your first app"
       SemanticProperties.HeadingLevel="Level3" />
<Label Text="Paragraphs of text go here." />     
<Label Text="Publish your app"
       SemanticProperties.HeadingLevel="Level4" />
<Label Text="Paragraphs of text go here." />   

Alternativ kann sie in C# folgendermaßen festgelegt werden:

Label label1 = new Label { Text = "Get started with .NET MAUI" };
Label label2 = new Label { Text = "Paragraphs of text go here." };
Label label3 = new Label { Text = "Installation" };
Label label4 = new Label { Text = "Paragraphs of text go here." };
Label label5 = new Label { Text = "Build your first app" };
Label label6 = new Label { Text = "Paragraphs of text go here." };
Label label7 = new Label { Text = "Publish your app" };
Label label8 = new Label { Text = "Paragraphs of text go here." };
SemanticProperties.SetHeadingLevel(label1, SemanticHeadingLevel.Level1);
SemanticProperties.SetHeadingLevel(label3, SemanticHeadingLevel.Level1);
SemanticProperties.SetHeadingLevel(label5, SemanticHeadingLevel.Level1);
SemanticProperties.SetHeadingLevel(label7, SemanticHeadingLevel.Level1);

Darüber hinaus kann die SetValue Methode auch verwendet werden, um die HeadingLevel Eigenschaft als hinzugefügt zu setzen:

label1.SetValue(SemanticProperties.HeadingLevelProperty, SemanticHeadingLevel.Level1);

Semantischer Fokus

Steuerelemente verfügen über eine SetSemanticFocus Erweiterungsmethode, die den Fokus des Bildschirmlesers auf ein bestimmtes Element erzwingt. Wenn beispielsweise ein Label mit dem Namen label vorhanden ist, kann der Fokus des Bildschirmlesers mit folgendem Code auf das Element erzwungen werden:

label.SetSemanticFocus();

Semantische Bildschirmleser

.NET MAUI stellt die ISemanticScreenReader Schnittstelle bereit, mit der Sie einen Bildschrimleser anweisen können, Benutzenden Text anzukündigen. Die Schnittstelle wird über die Eigenschaft Default offengelegt und ist verfügbar im Microsoft.Maui.Accessibility Namensbereich.

Um einen Bildschirmleser anzuweisen, Text anzusagen, verwenden Sie die Methode Announce und übergeben ein Argument string, das den Text darstellt. Das folgende Beispiel zeigt die Anwendung dieser Methode:

SemanticScreenReader.Default.Announce("This is the announcement text.");

Begrenzungen

Der Standardsprachausgabe der Plattform muss aktiviert sein, damit der Text laut vorgelesen werden kann.

Automatisierungseigenschaften

Automatisierungseigenschaften sind angehängte Eigenschaften, die zu jedem Element hinzugefügt werden können, um anzugeben, wie das Element an das zugrunde liegende Zugänglichkeits-Framework der Plattform gemeldet wird.

Die AutomationProperties Klasse definiert die folgenden angefügten Eigenschaften:

  • ExcludedWithChildren, vom Typ bool?, bestimmt, ob ein Element und seine untergeordneten Elemente von der Zugänglichkeitsstruktur ausgeschlossen werden sollen. Weitere Informationen finden Sie unter ExcludedWithChildren.
  • IsInAccessibleTree, vom Typ bool?, gibt an, ob das Element in der Zugänglichkeitsstruktur verfügbar ist. Weitere Informationen finden Sie unter IsInAccessibleTree.
  • Name, vom Typ string, stellt eine kurze Beschreibung des Elements dar, die als sprechbarer Bezeichner für dieses Element dient. Weitere Informationen finden Sie unter Name.
  • HelpText, vom Typ string, stellt eine längere Beschreibung des Elements dar, die man sich als Tooltip-Text vorstellen kann, der mit dem Element verbunden ist. Weitere Informationen finden Sie unter Kontext.
  • LabeledBy, vom Typ VisualElement, der es einem anderen Element ermöglicht, Informationen zur Zugänglichkeit für das aktuelle Element zu definieren. Weitere Informationen finden Sie unter LabeledBy.

Diese angefügten Eigenschaften legen plattformspezifische Zugänglichkeitswerte so fest, dass ein Bildschirmleser über das Element sprechen kann. Weitere Informationen zu angefügten Eigenschaften finden Sie unter Angefügte Eigenschaften.

Unterschiedliche Bildschirmleser lesen auch unterschiedliche Zugänglichkeitswerte. Deshalb empfiehlt es sich, die Zugänglichkeit auf jeder Plattform umfassend zu testen, um eine optimale Funktionsweise sicherzustellen.

Wichtig

Automatisierungseigenschaften sind der Xamarin.Forms-Ansatz zur Bereitstellung von Zugänglichkeitswerten in Apps und wurden durch semantische Eigenschaften ersetzt. Weitere Informationen zu semantischen Eigenschaften finden Sie unter Semantische Eigenschaften.

ExcludedWithChildren

Die angefügte ExcludedWithChildren Eigenschaft vom Typ bool? bestimmt, ob ein Element und seine untergeordneten Elemente aus der Zugänglichkeitsstruktur ausgeschlossen werden sollen. Dies ermöglicht Szenarien wie etwa das Anzeigen eines AbsoluteLayout über einem anderen Layout wie etwa ein StackLayout, wobei StackLayout von der Zugänglichkeitsstruktur ausgeschlossen wird, wenn es nicht sichtbar ist. Kann von XAML aus wie folgt verwendet werden:

<StackLayout AutomationProperties.ExcludedWithChildren="true">
...
</StackLayout>

Alternativ kann es in C# folgendermaßen festgelegt werden:

StackLayout stackLayout = new StackLayout();
...
AutomationProperties.SetExcludedWithChildren(stackLayout, true);

Wenn diese angehängte Eigenschaft gesetzt ist, setzt .NET MAUI die IsInAccessibleTree angehängte Eigenschaft auf false für das angegebene Element und seine Unterelemente.

IsInAccessibleTree

Warnung

Diese angefügte Eigenschaft sollte in der Regel nicht festgelegt werden. Die meisten Steuerelemente sollten in der Zugänglichkeitsstruktur vorhanden sein, und die angefügte AutomationProperties.ExcludedWithChildren Eigenschaft kann in Szenarien festgelegt werden, in denen ein Element und seine untergeordneten Elemente aus der Zugänglichkeitssruktur entfernt werden müssen.

Die angefügte IsInAccessibleTree Eigenschaft vom Typ bool? bestimmt, ob das Element für Bildschirmleser sichtbar ist. Sie muss auf true gesetzt werden, um die anderen Automatisierungseigenschaften zu nutzen. Dies kann in XAML folgendermaßen erfüllt werden:

<Entry AutomationProperties.IsInAccessibleTree="true" />

Alternativ kann es in C# folgendermaßen festgelegt werden:

Entry entry = new Entry();
AutomationProperties.SetIsInAccessibleTree(entry, true);

Warnung

Wenn unter iOS die IsInAccessibleTree-Eigenschaft true für ein Steuerelement mit Unterelementen gilt, kann der Bildschirmleser die Unterelemente nicht erreichen. Dies liegt daran, dass iOS keine Zugänglichkeits-Features bereitstellt, die die Navigation von einem übergeordneten Element in ein untergeordnetes Element ermöglichen.

Name

Wichtig

Die angefügte Name Eigenschaft ist in .NET 8 veraltet. Verwenden Sie stattdessen die angefügte Description Eigenschaft.

Der Wert der angefügten Eigenschaft Name sollte eine kurze beschreibende Textzeichenfolge sein, mit der eine Sprachausgabe ein Element ankündigen kann. Diese Eigenschaft sollte für Elemente festgelegt werden, deren Bedeutung wichtig für das Verstehen des Inhalts oder die Interaktion mit der Benutzeroberfläche ist. Dies kann in XAML folgendermaßen erfüllt werden:

<ActivityIndicator AutomationProperties.IsInAccessibleTree="true"
                   AutomationProperties.Name="Progress indicator" />

Alternativ kann es in C# folgendermaßen festgelegt werden:

ActivityIndicator activityIndicator = new ActivityIndicator();
AutomationProperties.SetIsInAccessibleTree(activityIndicator, true);
AutomationProperties.SetName(activityIndicator, "Progress indicator");

HelpText

Wichtig

Die angefügte HelpText Eigenschaft ist seit .NET 8 veraltet. Verwenden Sie stattdessen die angefügte Hint Eigenschaft.

Die angefügte Eigenschaft HelpText sollte auf Text festgelegt werden, der das Benutzeroberflächenelement beschreibt, und kann als QuickInfo-Text verstanden werden, der dem Element zugeordnet ist. Dies kann in XAML folgendermaßen erfüllt werden:

<Button Text="Toggle ActivityIndicator"
        AutomationProperties.IsInAccessibleTree="true"
        AutomationProperties.HelpText="Tap to toggle the activity indicator" />

Alternativ kann es in C# folgendermaßen festgelegt werden:

Button button = new Button { Text = "Toggle ActivityIndicator" };
AutomationProperties.SetIsInAccessibleTree(button, true);
AutomationProperties.SetHelpText(button, "Tap to toggle the activity indicator");

Auf manchen Plattformen kann für Bearbeitungssteuerelemente wie Entry die HelpText-Eigenschaft in einigen Fällen weggelassen und durch Platzhaltertext ersetzt werden. Zum Beispiel ist „Geben Sie hier Ihren Namen ein“ eine gute Variante für die Entry.Placeholder-Eigenschaft, die vor der tatsächlichen Eingabe durch den Benutzer den Text in das Steuerelement platziert.

LabeledBy

Wichtig

Die angefügte LabeledBy-Eigenschaft ist seit .NET 8 veraltet. Verwenden Sie stattdessen eine SemanticProperties.Description Bindung. Weitere Informationen finden Sie unter SemanticProperties: Beschreibung.

Die angefügte Eigenschaft LabeledBy ermöglicht es einem anderen Element, Informationen zur Barrierefreiheit für das aktuelle Element zu definieren. Zum Beispiel kann eine Label-Klasse neben einer Entry-Klasse verwendet werden, um zu beschreiben, wofür die Entry-Klasse steht. Dies kann in XAML folgendermaßen erfüllt werden:

<Label x:Name="label" Text="Enter your name: " />
<Entry AutomationProperties.IsInAccessibleTree="true"
       AutomationProperties.LabeledBy="{x:Reference label}" />

Alternativ kann es in C# folgendermaßen festgelegt werden:

Label label = new Label { Text = "Enter your name: " };
Entry entry = new Entry();
AutomationProperties.SetIsInAccessibleTree(entry, true);
AutomationProperties.SetLabeledBy(entry, label);

Wichtig

AutomationProperties.LabeledByProperty wird unter iOS nicht unterstützt.

Testen der Zugänglichkeit

.NET MAUI-Anwendungen sind in der Regel für mehrere Plattformen konzipiert. Dies bedeutet, dass die Zugänglichkeits-Features gemäß der jeweiligen Plattform getestet werden. Folgen Sie diesen Links, um zu erfahren, wie Sie die Barrierefreiheit auf der jeweiligen Plattform testen können:

Die folgenden Tools können Ihnen bei ihren Zugänglichkeitstests helfen:

Keines dieser Tools kann jedoch das Benutzererlebnis eines Bildschirmlesegeräts perfekt nachbilden, und die beste Möglichkeit, Ihre Anwendungen auf Zugänglichkeit zu testen und Fehler zu beheben, wird immer manuell auf physischen Geräten mit Bildschirmlesegeräten erfolgen.

Aktivieren von Bildschirmlesegeräten

Jede Plattform hat einen anderen Standard-Bildschirmleser für die Darstellung der Zugänglichkeitswerte:

Aktivieren von TalkBack

TalkBack ist die Hauptsprachausgabe, die unter Android verwendet wird. Ihre Aktivierung hängt vom Gerätehersteller, der Android-Version und der TalkBack-Version ab. TalkBack kann jedoch in der Regel über die Geräteeinstellungen auf Ihrem Android-Gerät aktiviert werden:

  1. Starten Sie die App Einstellungen .
  2. Wählen Sie Zugänglichkeit>TalkBack aus.
  3. Aktivieren Sie die Option TalkBack verwenden.
  4. Wählen Sie OK aus.

Hinweis

Obwohl diese Schritte für die meisten Geräte gelten, treten möglicherweise einige Unterschiede auf.

Ein TalkBack-Tutorial wird automatisch geöffnet, wenn Sie TalkBack zum ersten Mal aktivieren.

Alternative Methoden zum Aktivieren von TalkBack finden Sie unter Aktivieren oder Deaktivieren von TalkBack.

Aktivieren von VoiceOver

VoiceOver ist der primäre Bildschirmleser, der unter iOS und macOS verwendet wird. Unter iOS kann VoiceOver wie folgt aktiviert werden:

  1. Starten Sie die App Einstellungen .
  2. Wählen Sie Bedienungshilfen>VoiceOver aus.
  3. Aktivieren Sie VoiceOver.

Nach Aktivierung von VoiceOver kann ein Tutorial durch Auswahl von VoiceOver-Training geöffnet werden.

Alternative Methoden zum Aktivieren von VoiceOver finden Sie unter Aktivieren und Üben von VoiceOver auf iPhone und Aktivieren und Üben von VoiceOver auf iPad.

Unter macOS kann VoiceOver wie folgt aktiviert werden:

  1. Öffnen Sie die Systemeinstellungen.
  2. Wählen Sie Bedienungshilfen>VoiceOver aus.
  3. Wählen Sie VoiceOver aktivieren aus.
  4. Wählen Sie VoiceOver verwenden.

Ein VoiceOver-Tutorial kann geöffnet werden, indem Sie VoiceOver-Training öffnen… auswählen.

Alternative Methoden zum Aktivieren von VoiceOver finden Sie unter VoiceOver auf einem Mac aktivieren oder deaktivieren.

Sprachausgabe aktivieren

Sprachausgabe ist das primäre Bildschirmleseprogramm, das unter Windows verwendet wird. Sie aktivieren die Sprachausgabe durch gleichzeitiges Drücken der Windows-Logo-Taste + STRG + EINGABETASTE. Drücken Sie diese Tasten zum Beenden der Sprachausgabe noch einmal.

Weitere Informationen finden Sie in der umfassenden Anleitung für die Sprachausgabe.

Prüfliste für die Barrierefreiheit

Befolgen Sie diese Tipps, um sicherzustellen, dass Ihre .NET MAUI-Anwendungen für ein möglichst breites Publikum zugänglich sind:

  • Stellen Sie sicher, dass Ihre App durch Befolgen der Richtlinien für barrierefreie Webinhalte (WCAG, Web Content Accessibility Guidelines) für alle wahrnehmbar, funktionsfähig, verständlich und robust ist. WCAG ist der weltweite Standard für Barrierefreiheit und ein rechtlicher Maßstab für Web und Mobile. Weitere Informationen finden Sie unter Web Content Accessibility Guidelines (WCAG) Overview.
  • Stellen Sie sicher, dass die Benutzeroberfläche selbsterklärend ist. Testen Sie, ob alle Elemente Ihrer Benutzeroberfläche für die Sprachausgabe zugänglich sind. Fügen Sie bei Bedarf beschreibenden Text und Hinweise hinzu.
  • Achten Sie darauf, dass Bilder und Symbole mit alternativen Textbeschreibungen versehen sind.
  • Unterstützen Sie große Schriftarten und hohen Kontrast. Vermeiden Sie die Hartcodierung von Steuerelementabmessungen und bevorzugen Sie stattdessen Layouts, die sich an größere Schriftgrößen anpassen. Testen Sie Farbschemata im Modus „Hoher Kontrast“, um sicherzustellen, dass sie lesbar sind.
  • Entwerfen Sie die visuelle Struktur mit Blick auf die Navigation. Verwenden Sie geeignete Layout-Steuerelemente, damit die Navigation zwischen Steuerelementen mit alternativen Eingabemethoden demselben logischen Fluss folgt wie bei der Verwendung von Touch. Außerdem sollten Sie unnötige Elemente von Sprachausgaben ausschließen (wie etwa dekorative Bilder oder Beschriftungen für Felder, die bereits barrierefrei sind).
  • Verlassen Sie sich nicht allein auf Audio- oder Farbhinweise. Vermeiden Sie Situationen, in denen die einzige Anzeige des Fortschritts, der Fertigstellung oder eines anderen Zustands ein Ton oder eine Farbänderung ist. Entweder Sie gestalten die Benutzeroberfläche so, dass sie klare visuelle Hinweise enthält, wobei Ton und Farbe nur zur Verstärkung dienen, oder Sie fügen spezielle Indikatoren für die Barrierefreiheit hinzu. Vermeiden Sie bei der Farbauswahl eine Palette, die für farbenblinde Benutzer schwer zu unterscheiden ist.
  • Stellen Sie Untertitel für Videoinhalte und ein lesbares Skript für Audioinhalte bereit. Es ist auch hilfreich, Steuerelemente bereitzustellen, die die Geschwindigkeit von Audio- oder Videoinhalten anpassen und sicherstellen, dass Steuerelemente für Lautstärke und Datentransport leicht zu finden und zu verwenden sind.
  • Lokalisieren Sie Ihre Barrierefreiheitsbeschreibungen, wenn die App mehrere Sprachen unterstützt.
  • Testen Sie die Barrierefreiheitsfunktionen Ihrer App auf jeder Plattform, auf die sie ausgerichtet ist. Weitere Informationen finden Sie unter Testen auf Barrierefreiheit.