fix(a11y): add iOS VoiceOver support to picker and Done button#22
Open
TaduJR wants to merge 2 commits intoExpensify:masterfrom
Open
fix(a11y): add iOS VoiceOver support to picker and Done button#22TaduJR wants to merge 2 commits intoExpensify:masterfrom
TaduJR wants to merge 2 commits intoExpensify:masterfrom
Conversation
Author
|
Friendly bump @eVoloshchak When you have a moment. Thanks! |
|
@TaduJR, does this work for you on iOS? Screen.Recording.2026-03-20.at.12.22.44.movIt also doesn't have a type
|
Author
Hi @eVoloshchak There was breaking change and accessibility role inconsistency on the new iOS versions. I was testing on iOS 18 and it was working not sure how. Pushed the latest code. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Summary
Adds built-in accessibility to
renderIOS()and the Done button, matching the pattern established inrenderAndroidHeadless()(PR #19). Also fixes an upstream regression that broke iOS picker touch handling.iOS picker wrapper (
ios_touchable_wrapper)accessible={true}accessibilityRole="button"(comboboxhas no effect on iOS — facebook/react-native#50123)accessibilityLabelextracted frompickerProps.accessibilityLabelaccessibilityState={{ disabled, expanded: showPicker }}Done button (
done_button)accessibilityRole="button"accessibilityLabel={doneText}Upstream regression fix
pointerEvents="none"on the TextInput inrenderTextInputOrChildren(), removed during the upstream merge (8.1.0 → 9.3.1). Without it, the native TextInput intercepts touches on iOS, preventing the picker from opening.Library props are placed after
{...touchableWrapperProps}/{...touchableDoneProps}so library values take precedence, ensuring consistent screen reader behavior.Demo:
Screen.Recording.2026-03-23.at.5.26.46.in.the.afternoon.mov
cc @eVoloshchak @inimaga