-
Notifications
You must be signed in to change notification settings - Fork 1.9k
[Bug] [a11y] Disabled button on iOS not accessible when the TabIndex property is used on one of the elements #13962
Description
Description
On most of our pages we have two buttons from which one is disabled because the user did not enter data in all the required fields for example.
When in VoiceOver mode the a11y-tree does not contain the disabled button. This only occurs when you use the "TabIndex" property in one of the Elements. As soon as you delete all the TabIndex-properties the button is accessible.
Steps to Reproduce
- Build the solution attached to this issue for iOS.
- Put the device in VoiceOver mode.
- In the open app choose for "Menu"
- In the menu choose for "About"
- On the "About"-page swipe to the right to try to read all the elements on the screen.
Expected Behavior
When swiping through the page I want to hear all the elements on the screen, also the disabled button.
Actual Behavior
When one of the elements have the TabIndex property set the disabled button is not accessible, so the user does not know the button is on the screen.
It does not matter if the TabIndex is set in the .xaml file or in the code behind.
Basic Information
- Version with issue: n.a.
- Last known good version: n.a.
- Platform Target Frameworks: Xamarin.Form version 5.0.0.2012 (and before)
- iOS: version does not matter.
- Affected Devices: All iOS devices
Environment
Show/Hide Visual Studio info
=== Visual Studio Enterprise 2019 for Mac ===
Version 8.9 (build 1651)
Installation UUID: 45c0aa60-cc01-41c2-a6b1-023bb46bb47a
GTK+ 2.24.23 (Raleigh theme)
Xamarin.Mac 6.18.0.23 (d16-6 / 088c73638)
Package version: 612000122
=== Mono Framework MDK ===
Runtime:
Mono 6.12.0.122 (2020-02/c621c35ffa0) (64-bit)
Package version: 612000122
=== Roslyn (Language Service) ===
3.9.0-5.21112.8+f3ff04378c972d435826e6181de364b3c0db8d14
=== NuGet ===
Version: 5.8.0.6860
=== .NET Core SDK ===
SDK: /usr/local/share/dotnet/sdk/5.0.103/Sdks
SDK Versions:
5.0.103
5.0.102
5.0.101
5.0.100
3.1.406
3.1.405
3.1.404
3.1.403
3.1.402
3.1.401
3.1.301
3.1.300
3.1.202
3.1.200
3.1.102
3.1.101
3.0.101
3.0.100
2.1.202
MSBuild SDKs: /Applications/Visual Studio.app/Contents/Resources/lib/monodevelop/bin/MSBuild/Current/bin/Sdks
=== .NET Core Runtime ===
Runtime: /usr/local/share/dotnet/dotnet
Runtime Versions:
5.0.3
5.0.2
5.0.1
5.0.0
3.1.12
3.1.11
3.1.10
3.1.9
3.1.8
3.1.7
3.1.5
3.1.4
3.1.2
3.1.1
3.0.1
3.0.0
2.1.23
2.1.22
2.1.21
2.1.19
2.1.18
2.1.17
2.1.16
2.1.15
2.1.14
2.1.13
2.0.9
=== .NET Core 3.1 SDK ===
SDK: 3.1.406
=== Xamarin.Profiler ===
Version: 1.6.15.68
Location: /Applications/Xamarin Profiler.app/Contents/MacOS/Xamarin Profiler
=== Updater ===
Version: 11
=== Xamarin.Android ===
Version: 11.2.0.0 (Visual Studio Enterprise)
Commit: xamarin-android/d16-9/f908d16
Android SDK: /Users/klaastroost/Library/Developer/Xamarin/android-sdk-macosx
Supported Android versions:
None installed
SDK Tools Version: 26.1.1
SDK Platform Tools Version: 31.0.0
SDK Build Tools Version: 30.0.2
Build Information:
Mono: 5e9cb6d
Java.Interop: xamarin/java.interop/d16-9@1d382be
ProGuard: Guardsquare/proguard/v7.0.1@912d149
SQLite: xamarin/sqlite/3.32.2@cfe06e0
Xamarin.Android Tools: xamarin/xamarin-android-tools/main@ad80a42
=== Microsoft OpenJDK for Mobile ===
Java SDK: /Users/klaastroost/Library/Developer/Xamarin/jdk/microsoft_dist_openjdk_1.8.0.25
1.8.0-25
Android Designer EPL code available here:
https://github.com/xamarin/AndroidDesigner.EPL
=== Android SDK Manager ===
Version: 16.9.0.22
Hash: a391de2
Branch: remotes/origin/d16-9
Build date: 2021-02-18 03:14:56 UTC
=== Android Device Manager ===
Version: 16.9.0.17
Hash: fc2b3db
Branch: remotes/origin/d16-9
Build date: 2021-02-18 03:15:18 UTC
=== Xamarin Designer ===
Version: 16.9.0.316
Hash: bd2705417
Branch: remotes/origin/d16-9
Build date: 2021-02-24 00:16:08 UTC
=== Apple Developer Tools ===
Xcode 12.4 (17801)
Build 12D4e
=== Xamarin.Mac ===
Version: 7.8.2.5 (Visual Studio Enterprise)
Hash: 3836759d4
Branch: d16-9
Build date: 2021-02-10 17:56:43-0500
=== Xamarin.iOS ===
Version: 14.14.2.5 (Visual Studio Enterprise)
Hash: 3836759d4
Branch: d16-9
Build date: 2021-02-10 17:56:44-0500
=== Build Information ===
Release ID: 809001651
Git revision: c05b1dec4362b5956d47624a437e900ffdc9aa0a
Build date: 2021-02-25 11:27:51-05
Build branch: release-8.9
Xamarin extensions: c05b1dec4362b5956d47624a437e900ffdc9aa0a
=== Operating System ===
Mac OS X 10.16.0
Darwin 20.1.0 Darwin Kernel Version 20.1.0
Sat Oct 31 00:07:11 PDT 2020
root:xnu-7195.50.7~2/RELEASE_X86_64 x86_64
Build Logs
Screenshots
Reproduction Link
zipfile to reproduce:
Archief.zip
Workaround
The workaround is not use TabIndex, but that's not what we want. We want to use TabIndexes for changing the order in which the elements are read to the user.