Aracılığıyla paylaş


içindeki Otomasyon Özellikleri Xamarin.Forms

Xamarin.Forms , AutomationProperties sınıfından ekli özellikler kullanılarak kullanıcı arabirimi öğelerinde erişilebilirlik değerlerinin ayarlanmasına izin verir ve bu da yerel erişilebilirlik değerlerini ayarlar. Bu makalede, bir ekran okuyucunun sayfadaki öğeler hakkında konuşabilmesi için AutomationProperties sınıfının nasıl kullanılacağı açıklanmaktadır.

Xamarin.Forms otomasyon özelliklerinin aşağıdaki ekli özellikler aracılığıyla kullanıcı arabirimi öğelerinde ayarlanmasına izin verir:

  • AutomationProperties.IsInAccessibleTree – öğesinin erişilebilir bir uygulama için kullanılabilir olup olmadığını gösterir. Daha fazla bilgi için bkz . AutomationProperties.IsInAccessibleTree.
  • AutomationProperties.Name – öğe için seslendirilebilir tanımlayıcı işlevi görecek öğenin kısa bir açıklaması. Daha fazla bilgi için bkz . AutomationProperties.Name.
  • AutomationProperties.HelpText – öğesiyle ilişkili araç ipucu metni olarak düşünülebilen öğenin daha uzun bir açıklaması. Daha fazla bilgi için bkz . AutomationProperties.HelpText.
  • AutomationProperties.LabeledBy – başka bir öğenin geçerli öğe için erişilebilirlik bilgilerini tanımlamasına izin verir. Daha fazla bilgi için bkz . AutomationProperties.LabeledBy.

Bu ekli özellikler, ekran okuyucunun öğe hakkında konuşabilmesi için yerel erişilebilirlik değerlerini ayarlar. Ekli özellikler hakkında daha fazla bilgi için bkz . Ekli Özellikler.

Önemli

Ekli özelliklerin AutomationProperties kullanılması Android'de UI Test yürütmesini etkileyebilir. AutomationIdve AutomationProperties.Name AutomationProperties.HelpText özellikleri hem yerel ContentDescription özelliği AutomationProperties.Name ayarlar, hem de özellik AutomationProperties.HelpText değerleri değerden AutomationId öncelikli olur (hem AutomationProperties.HelpText hem de AutomationProperties.Name ayarlanırsa, değerler birleştirilir). Bu, öğesinde ayarlanmışsa veya AutomationProperties.HelpText ayarlanmışsaAutomationProperties.Name, aranacak AutomationId tüm testlerin başarısız olacağı anlamına gelir. Bu senaryoda, kullanıcı arabirimi testlerinin AutomationProperties.Name veya değerini ya da AutomationProperties.HelpTexther ikisinin birleştirmesini aramak için değiştirilmesi gerekir.

Her platformun erişilebilirlik değerlerini anlatacak farklı bir ekran okuyucusu vardır:

Ancak, ekran okuyucunun tam davranışı yazılıma ve kullanıcının yapılandırmasına bağlıdır. Örneğin, ekran okuyucuların çoğu odak aldığında denetimle ilişkili metni okur ve kullanıcıların sayfadaki denetimler arasında gezinirken kendilerini yönlendirmelerine olanak tanır. Bazı ekran okuyucular bir sayfa görüntülendiğinde uygulama kullanıcı arabiriminin tamamını da okur ve bu da kullanıcının sayfaya gitmeyi denemeden önce sayfanın tüm kullanılabilir bilgi içeriğini almasını sağlar.

Ekran okuyucular farklı erişilebilirlik değerlerini de okur. Örnek uygulamada:

  • VoiceOver, değerini Entryve ardından denetimi kullanma yönergelerini okurPlaceholder.
  • TalkBack değerini, ardından AutomationProperties.HelpText değerini Entryve ardından denetimi kullanma yönergelerini okurPlaceholder.
  • Ekran Okuyucusu değerini okur AutomationProperties.LabeledBy Entryve ardından denetimi kullanma yönergelerini izler.

Buna ek olarak, Ekran Okuyucusu , AutomationProperties.LabeledByve sonra AutomationProperties.HelpTextönceliklerini AutomationProperties.Namede alır. Android'de TalkBack ve AutomationProperties.HelpText değerlerini birleştirebilirAutomationProperties.Name. Bu nedenle, en iyi deneyimi sağlamak için her platformda kapsamlı erişilebilirlik testi yapılması önerilir.

AutomationProperties.IsInAccessibleTree

AutomationProperties.IsInAccessibleTree Ekli özellik, öğenin ekran okuyucular tarafından erişilebilir ve bu nedenle görünür olup olmadığını belirleyen bir boolean özelliktir. Diğer erişilebilirlik ekli özelliklerini kullanacak şekilde true ayarlanmalıdır. Bu, XAML'de aşağıdaki gibi gerçekleştirilebilir:

<Entry AutomationProperties.IsInAccessibleTree="true" />

Alternatif olarak, C# dilinde aşağıdaki gibi ayarlanabilir:

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

Not

yönteminin SetValue ekli özelliği ayarlamak AutomationProperties.IsInAccessibleTree için de kullanılabileceğini unutmayın: entry.SetValue(AutomationProperties.IsInAccessibleTreeProperty, true);

AutomationProperties.Name

Eklenen AutomationProperties.Name özellik değeri, ekran okuyucunun bir öğeyi duyurmak için kullandığı kısa, açıklayıcı bir metin dizesi olmalıdır. Bu özellik, içeriği anlamak veya kullanıcı arabirimiyle etkileşim kurmak için önemli bir anlamı olan öğeler için ayarlanmalıdır. Bu, XAML'de aşağıdaki gibi gerçekleştirilebilir:

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

Alternatif olarak, C# dilinde aşağıdaki gibi ayarlanabilir:

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

Not

yönteminin SetValue ekli özelliği ayarlamak AutomationProperties.Name için de kullanılabileceğini unutmayın: activityIndicator.SetValue(AutomationProperties.NameProperty, "Progress indicator");

AutomationProperties.HelpText

AutomationProperties.HelpText Eklenen özellik, kullanıcı arabirimi öğesini tanımlayan metne ayarlanmalıdır ve öğesiyle ilişkilendirilmiş araç ipucu metni olarak düşünülebilir. Bu, XAML'de aşağıdaki gibi gerçekleştirilebilir:

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

Alternatif olarak, C# dilinde aşağıdaki gibi ayarlanabilir:

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

Not

yönteminin SetValue ekli özelliği ayarlamak AutomationProperties.HelpText için de kullanılabileceğini unutmayın: button.SetValue(AutomationProperties.HelpTextProperty, "Tap to toggle the activity indicator");

Bazı platformlarda, gibi EntryHelpText düzenleme denetimleri için özelliği bazen atlanabilir ve yer tutucu metinle değiştirilebilir. Örneğin, "Adınızı buraya girin", kullanıcının gerçek girişine göre metni denetime yerleştiren özellik için Entry.Placeholder iyi bir adaydır.

AutomationProperties.LabeledBy

AutomationProperties.LabeledBy Ekli özellik, başka bir öğenin geçerli öğe için erişilebilirlik bilgilerini tanımlamasına olanak tanır. Örneğin, öğesinin Label yanındaki Entry öğesinin neyi temsil ettiği Entry açıklanabilir. Bu, XAML'de aşağıdaki gibi gerçekleştirilebilir:

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

Alternatif olarak, C# dilinde aşağıdaki gibi ayarlanabilir:

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

Önemli

AutomationProperties.LabeledByProperty henüz iOS'ta desteklenmiyor.

Not

yönteminin SetValue ekli özelliği ayarlamak AutomationProperties.IsInAccessibleTree için de kullanılabileceğini unutmayın: entry.SetValue(AutomationProperties.LabeledByProperty, nameLabel);

Erişilebilirlik karmaşıklıkları

Aşağıdaki bölümlerde, belirli denetimlerde erişilebilirlik değerlerini ayarlamanın karmaşıklıkları açıklanmaktadır.

Android'de, ekran okuyucuların bir NavigationPageiçindeki eylem çubuğundaki geri ok için okuyacağı metni ayarlamak için ve özelliklerini üzerinde Pageayarlayın AutomationProperties.Name AutomationProperties.HelpText. Ancak, bunun işletim sistemi arka düğmeleri üzerinde bir etkisi olmadığını unutmayın.

FlyoutPage

iOS'ta ve Evrensel Windows Platformu (UWP) üzerinde ekran okuyucuların iki durumlu düğme FlyoutPageiçin okuyacağı metni ayarlamak için , veya IconImageSource Flyout sayfasında , ve AutomationProperties.HelpText özelliklerini FlyoutPageayarlayınAutomationProperties.Name.

Android'de, ekran okuyucuların bir FlyoutPageüzerindeki iki durumlu düğme için okuyacağı metni ayarlamak için, Android projesine dize kaynakları ekleyin:

<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>

Ardından sayfanın özelliğini IconImageSource Flyout uygun dizeye ayarlayınAutomationId:

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

ToolbarItem

iOS, Android ve UWP'de ekran okuyucular, veya değerlerinin ToolbarItem tanımlanmadığı durumlarda örneklerin AutomationProperties.Name özellik değerini okurText.AutomationProperties.HelpText

iOS ve UWP'de AutomationProperties.Name özellik değeri, ekran okuyucu tarafından okunan özellik değerinin yerini alır Text .

Android'de ve/veya AutomationProperties.HelpText özellik değerleri, AutomationProperties.Name ekran okuyucu tarafından hem görünen hem de okunan özellik değerinin yerini Text alır. Bunun 26'dan küçük API'ler için bir sınırlama olduğunu unutmayın.