Aracılığıyla paylaş


klavye erişilebilirliği Xamarin.Forms

Ekran okuyucu kullanan veya hareket sorunları yaşayan kullanıcılar, uygun klavye erişimi sağlamayan uygulamaları kullanmakta zorlanabilir. Xamarin.Forms uygulamaların kullanılabilirliğini ve erişilebilirliğini geliştirmek için belirtilen beklenen bir sekme sırası olabilir. Denetimler için sekme sırası belirtmek klavye gezintisini etkinleştirir, uygulama sayfalarını belirli bir sırada giriş almaya hazırlar ve ekran okuyucuların kullanıcıya odaklanabilir öğeleri okumasına izin verir.

Varsayılan olarak, denetimlerin sekme sırası, XAML'de listelendikleri veya bir alt koleksiyona program aracılığıyla eklendikleri sırayla aynıdır. Bu sıra, denetimlerin klavyeyle gezinileceği ve ekran okuyucular tarafından okunacağı sıradır ve genellikle bu varsayılan sıra en iyi sıradır. Ancak, aşağıdaki XAML kod örneğinde gösterildiği gibi varsayılan sıra her zaman beklenen sıralamayla aynı değildir:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="0.5*" />
        <ColumnDefinition Width="0.5*" />
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>
    <Label Text="You"
           HorizontalOptions="Center" />
    <Label Grid.Column="1"
           Text="Manager"
           HorizontalOptions="Center" />
    <Entry Grid.Row="1"
           Placeholder="Enter forename" />
    <Entry Grid.Column="1"
           Grid.Row="1"
           Placeholder="Enter forename" />
    <Entry Grid.Row="2"
           Placeholder="Enter surname" />
    <Entry Grid.Column="1"
           Grid.Row="2"
           Placeholder="Enter surname" />
</Grid>

Aşağıdaki ekran görüntüsünde bu kod örneği için varsayılan sekme sırası gösterilmektedir:

Varsayılan Satır Tabanlı Sekme Sırası

Buradaki sekme sırası satır tabanlıdır ve denetimlerin XAML'de listelenme sırasıdır. Bu nedenle, Sekme tuşuna basıldığında forename Entry örnekleri ve ardından soyadı Entry örnekleri arasında gezinilir. Ancak, sekme tuşuna basıldığında forename-soyad çiftleri arasında gezinmek için sütun öncelikli sekme gezintisi kullanmak daha sezgisel bir deneyim olacaktır. Bu, giriş denetimlerinin sekme sırası belirtilerek elde edilebilir.

Not

Evrensel Windows Platformu, kullanıcıların dokunmatik veya fare yerine klavye aracılığıyla uygulamanın görünür kullanıcı arabiriminde hızla gezinmesi ve kullanıcı arabirimiyle etkileşim kurması için sezgisel bir yol sağlayan klavye kısayolları tanımlanabilir. Daha fazla bilgi için bkz . VisualElement Erişim Anahtarlarını Ayarlama.

Sekme sırasını ayarlama

VisualElement.TabIndex özelliği, kullanıcı Sekme tuşuna basarak denetimler arasında gezindiğinde örneklerin odağı alma sırasını VisualElement belirtmek için kullanılır. Özelliğin varsayılan değeri 0'dır ve herhangi bir int değere ayarlanabilir.

Varsayılan sekme sırası kullanılırken veya özelliği ayarlanırken TabIndex aşağıdaki kurallar geçerlidir:

  • VisualElement 0'a eşit olan TabIndex örnekler, XAML veya alt koleksiyonlardaki bildirim sırasına göre sekme sırasına eklenir.
  • VisualElementTabIndex 0'dan büyük örnekler, değerlerine göre TabIndex sekme sırasına eklenir.
  • VisualElement 0'dan küçük örnekler TabIndex sekme sırasına eklenir ve sıfır değerinden önce görünür.
  • üzerindeki TabIndex çakışmalar bildirim sırasına göre çözümlenir.

Sekme sırasını tanımladıktan sonra, Sekme tuşuna basıldığında odak, denetimler arasında artan TabIndex düzende döngüye girer ve son denetime ulaşıldığında baştan başlara kaydırılır.

Uyarı

Evrensel Windows Platformu, sekme sırasının TabIndex denetim bildirimi sırasıyla aynı olması için her denetimin özelliği olarak ayarlanmalıdırint.MaxValue.

Aşağıdaki XAML örneği, sütun öncelikli sekme gezintisini TabIndex etkinleştirmek için giriş denetimlerinde ayarlanan özelliği gösterir:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="0.5*" />
        <ColumnDefinition Width="0.5*" />
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>
    <Label Text="You"
           HorizontalOptions="Center" />
    <Label Grid.Column="1"
           Text="Manager"
           HorizontalOptions="Center" />
    <Entry Grid.Row="1"
           Placeholder="Enter forename"
           TabIndex="1" />
    <Entry Grid.Column="1"
           Grid.Row="1"
           Placeholder="Enter forename"
           TabIndex="3" />
    <Entry Grid.Row="2"
           Placeholder="Enter surname"
           TabIndex="2" />
    <Entry Grid.Column="1"
           Grid.Row="2"
           Placeholder="Enter surname"
           TabIndex="4" />
</Grid>

Aşağıdaki ekran görüntüsünde bu kod örneğinin sekme sırası gösterilmektedir:

Sütun Tabanlı Sekme Sırası

Buradaki sekme sırası sütun tabanlıdır. Bu nedenle, Sekme tuşuna basıldığında forename-soyad Entry çiftleri arasında gezinilir.

Önemli

iOS ve Android'de ekran okuyucular, ekrandaki erişilebilir öğeleri okurken'e VisualElement saygı TabIndex gösterir.

Denetimleri sekme sırası dışında tutarak

Denetimlerin sekme sırasını ayarlamaya ek olarak, denetimleri sekme sırasının dışında tutmak da gerekebilir. Bunu başarmanın bir yolu, devre dışı bırakılan denetimler sekme sırasının dışında tutulduğundan denetimlerin özelliğini olarak falseayarlamaktırIsEnabled.

Ancak, devre dışı bırakılmadığında bile denetimlerin sekme sırasının dışında tutulması gerekebilir. Bu, bir öğesinin sekme gezintisine eklenip eklenmediğini VisualElement.IsTabStop VisualElement gösteren özelliğiyle elde edilebilir. Varsayılan değeri olur trueve değeri denetim olduğunda false , ayarlanıp ayarlanmadığını TabIndex dikkate almadan sekme gezinti altyapısı tarafından yoksayılır.

Desteklenen denetimler

TabIndex ve IsTabStop özellikleri, bir veya daha fazla platformda klavye girişini kabul eden aşağıdaki denetimlerde desteklenir:

Not

Bu denetimlerin her biri her platformda sekmeyle odaklanamaz.