Sdílet prostřednictvím


Vlastnosti automatizace v Xamarin.Forms

Xamarin.Forms umožňuje nastavit hodnoty přístupnosti u prvků uživatelského rozhraní pomocí připojených vlastností z AutomationProperties třídy, která zase nastaví nativní hodnoty přístupnosti. Tento článek vysvětluje, jak používat třídu AutomationProperties, aby čtečka obrazovky mohl mluvit o prvcích na stránce.

Xamarin.Forms umožňuje nastavit vlastnosti automatizace u prvků uživatelského rozhraní pomocí následujících připojených vlastností:

  • AutomationProperties.IsInAccessibleTree – označuje, zda je prvek k dispozici pro přístupnou aplikaci. Další informace naleznete v tématu AutomationProperties.IsInAccessibleTree.
  • AutomationProperties.Name – krátký popis prvku, který slouží jako vyslovitelný identifikátor prvku. Další informace najdete v tématu AutomationProperties.Name.
  • AutomationProperties.HelpText – delší popis prvku, který lze považovat za text popisu přidružený k prvku. Další informace naleznete v tématu AutomationProperties.HelpText.
  • AutomationProperties.LabeledBy – umožňuje dalšímu prvku definovat informace o přístupnosti pro aktuální prvek. Další informace naleznete v tématu AutomationProperties.LabeledBy.

Tyto připojené vlastnosti nastaví nativní hodnoty přístupnosti, aby čtečka obrazovky mohl mluvit o prvku. Další informace o připojených vlastnostech naleznete v tématu Připojené vlastnosti.

Důležité

Použití připojených vlastností může mít vliv na AutomationProperties provádění testů uživatelského rozhraní v Androidu. Vlastnost AutomationIda AutomationProperties.HelpText vlastnosti nastaví nativní ContentDescription vlastnost, přičemž AutomationProperties.Name hodnoty i AutomationProperties.HelpText hodnoty vlastnosti mají přednost před AutomationId hodnotou (pokud AutomationProperties.Name jsou obě a AutomationProperties.HelpText jsou nastaveny, hodnoty budou zřetězenyAutomationProperties.Name). To znamená, že všechny testy, AutomationId které hledají, selžou, pokud AutomationProperties.Name nebo AutomationProperties.HelpText jsou nastavené na elementu. V tomto scénáři by se testy uživatelského rozhraní měly změnit tak, aby hledaly hodnotu AutomationProperties.Name nebo AutomationProperties.HelpTextzřetězení obou.

Každá platforma má jinou čtečku obrazovky pro pojmenování hodnot přístupnosti:

Přesné chování čtečky obrazovky ale závisí na softwaru a jeho konfiguraci. Například většina čteček obrazovky přečte text přidružený k ovládacímu prvku, když dostane fokus, což uživatelům umožní orientovat se při procházení mezi ovládacími prvky na stránce. Některé čtečky obrazovky také čtou celé uživatelské rozhraní aplikace, když se zobrazí stránka, která uživateli umožňuje získat veškerý dostupný informační obsah stránky před pokusem o navigaci.

Čtečky obrazovky také čtou různé hodnoty přístupnosti. V ukázkové aplikaci:

  • VoiceOver přečte Placeholder hodnotu Entryovládacího prvku a potom pokyny pro použití ovládacího prvku.
  • TalkBack přečte Placeholder hodnotu , Entrynásledované AutomationProperties.HelpText hodnotou, následované pokyny pro použití ovládacího prvku.
  • Program Předčítání přečte AutomationProperties.LabeledBy hodnotu Entryovládacího prvku a potom pokyny k použití ovládacího prvku.

Kromě toho program Předčítání nastaví prioritu AutomationProperties.Name, AutomationProperties.LabeledBya pak AutomationProperties.HelpText. V Androidu může TalkBack kombinovat hodnoty AutomationProperties.Name a AutomationProperties.HelpText hodnoty. Proto se doporučuje, aby se na každé platformě provádělo důkladné testování přístupnosti, aby se zajistilo optimální prostředí.

AutomationProperties.IsInAccessibleTree

Připojená AutomationProperties.IsInAccessibleTree vlastnost je boolean , která určuje, zda je prvek přístupný, a proto je viditelný pro čtečky obrazovky. Musí být nastavená tak, aby true používala ostatní připojené vlastnosti přístupnosti. To lze provést v XAML následujícím způsobem:

<Entry AutomationProperties.IsInAccessibleTree="true" />

Alternativně ji můžete nastavit v jazyce C#následujícím způsobem:

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

Poznámka:

Všimněte si, že metodu SetValue lze také použít k nastavení AutomationProperties.IsInAccessibleTree připojené vlastnosti – entry.SetValue(AutomationProperties.IsInAccessibleTreeProperty, true);

AutomationProperties.Name

Připojená AutomationProperties.Name hodnota vlastnosti by měla být krátký popisný textový řetězec, který čtečka obrazovky používá k oznámení prvku. Tato vlastnost by měla být nastavena pro prvky, které mají význam, které jsou důležité pro pochopení obsahu nebo interakci s uživatelským rozhraním. To lze provést v XAML následujícím způsobem:

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

Alternativně ji můžete nastavit v jazyce C#následujícím způsobem:

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

Poznámka:

Všimněte si, že metodu SetValue lze také použít k nastavení AutomationProperties.Name připojené vlastnosti – activityIndicator.SetValue(AutomationProperties.NameProperty, "Progress indicator");

AutomationProperties.HelpText

Připojená AutomationProperties.HelpText vlastnost by měla být nastavena na text, který popisuje prvek uživatelského rozhraní, a lze si představit jako popisek text přidružený k prvku. To lze provést v XAML následujícím způsobem:

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

Alternativně ji můžete nastavit v jazyce C#následujícím způsobem:

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

Poznámka:

Všimněte si, že metodu SetValue lze také použít k nastavení AutomationProperties.HelpText připojené vlastnosti – button.SetValue(AutomationProperties.HelpTextProperty, "Tap to toggle the activity indicator");

Na některých platformách lze pro úpravy ovládacích prvků, jako Entryje například , HelpText vlastnost někdy vynechána a nahrazena zástupným textem. Například "Sem zadejte své jméno" je vhodným kandidátem na Entry.Placeholder vlastnost, která před skutečným vstupem uživatele umístí text do ovládacího prvku.

AutomationProperties.LabeledBy

Připojená AutomationProperties.LabeledBy vlastnost umožňuje dalšímu prvku definovat informace o přístupnosti pro aktuální prvek. Například k popisu toho, Label co představuje, je možné použít vedle symbolu Entry Entry. To lze provést v XAML následujícím způsobem:

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

Alternativně ji můžete nastavit v jazyce C#následujícím způsobem:

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

Důležité

V iOSu AutomationProperties.LabeledByProperty se zatím nepodporuje.

Poznámka:

Všimněte si, že metodu SetValue lze také použít k nastavení AutomationProperties.IsInAccessibleTree připojené vlastnosti – entry.SetValue(AutomationProperties.LabeledByProperty, nameLabel);

Složitost přístupnosti

Následující části popisují složité nastavení hodnot přístupnosti u určitých ovládacích prvků.

Pokud chcete v Androidu nastavit text, který čtečky obrazovky čtou pro šipku zpět na panelu NavigationPageakcí, nastavte vlastnosti AutomationProperties.HelpText AutomationProperties.Name na Pagekartě . Mějte ale na paměti, že to nebude mít vliv na tlačítka zpět operačního systému.

FlyoutPage

V iOSu a Univerzální platforma Windows (UPW) nastavíte text, který čtečky obrazovky čtou pro přepínací tlačítko na FlyoutPagepřepínači , buď nastavte AutomationProperties.Name, a AutomationProperties.HelpText vlastnosti na FlyoutPagestránce nebo na IconImageSource vlastnosti Flyout stránky.

Pokud chcete v Androidu nastavit text, který čtečky obrazovky čtou pro přepínací tlačítko na tlačítku FlyoutPage, přidejte do projektu Android textové prostředky:

<resources>
    <string name="app_name">Xamarin Forms Control Gallery</string>
    <string name="btnMDPAutomationID_open">Open Side Menu message</string>
    <string name="btnMDPAutomationID_close">Close Side Menu message</string>
</resources>

Potom nastavte AutomationId vlastnost IconImageSource vlastnosti Flyout stránky na příslušný řetězec:

var flyout = new ContentPage { ... };
flyout.IconImageSource.AutomationId = "btnMDPAutomationID";

ToolbarItem

V iOSu, Androidu a UPW čtou čtečky Text obrazovky hodnotu ToolbarItem vlastnosti instancí za předpokladu, že AutomationProperties.Name nebo AutomationProperties.HelpText hodnoty nejsou definovány.

V iOSu AutomationProperties.Name a UPW hodnota vlastnosti nahradí Text hodnotu vlastnosti přečtenou čtečkou obrazovky.

V Androidu AutomationProperties.Name hodnoty a/nebo AutomationProperties.HelpText vlastnosti zcela nahradí Text hodnotu vlastnosti, která je viditelná i přečtená čtečkou obrazovky. Všimněte si, že se jedná o omezení rozhraní API menší než 26.