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:
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 olanTabIndex
örnekler, XAML veya alt koleksiyonlardaki bildirim sırasına göre sekme sırasına eklenir.VisualElement
TabIndex
0'dan büyük örnekler, değerlerine göreTabIndex
sekme sırasına eklenir.VisualElement
0'dan küçük örneklerTabIndex
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:
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 false
ayarlamaktı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 true
ve 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:
Button
DatePicker
Editor
Entry
NavigationPage
Picker
ProgressBar
SearchBar
Slider
Stepper
Switch
TabbedPage
TimePicker
Not
Bu denetimlerin her biri her platformda sekmeyle odaklanamaz.