Skip to content

Fix accessibilityOrder when referencing both a parent and its children #52115

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

jorge-cab
Copy link
Contributor

Summary:
With the new implementation of accessibilityOrder we associate virtualView's nodes to the actual views they reperesent by calling addChild(view)

This however causes an issue, the view itself will populate its accessibility children which prevents them from following the axOrder if both the parent and children are mentioned in the order.

With this change we now set a delegate and a provider to every view within the view that sets an axOrder to prevent the default logic to set accessibilityChildren on views that are not considered "containers".

In the case that they are "containers" (not accessible yet mentioned in the order) We want to keep the default logic that assigns them accessibilityChildren.

Differential Revision: D76911074

Summary:
Pull Request resolved: facebook#52066

Before, to disable views that were excluded from the order we were setting them to be not important for accessibility. This however breaks coopting behavior of parent views, because parent views will not announce content descriptions of children that are not important for accessibility.

Instead of disabling by setting `important for accessibility = no` now we just set `isFocusable = false` which disables focusing but still allows parent views to coopt

We also add functionality to restore view focusability when enabling disabling screen readers since `isFocusable` changes keyboard focusability and when screen readers are disabled we don't want to change it.

Changelog: [Internal]

Differential Revision: D76745057
Summary:
With the new implementation of accessibilityOrder we associate virtualView's nodes to the actual views they reperesent by calling `addChild(view)`

This however causes an issue, the view itself will populate its accessibility children which prevents them from following the axOrder if both the parent and children are mentioned in the order.

With this change we now set a delegate and a provider to every view within the view that sets an axOrder to prevent the default logic to set accessibilityChildren on views that are not considered "containers".

In the case that they are "containers" (not accessible yet mentioned in the order) We want to keep the default logic that assigns them accessibilityChildren.

Differential Revision: D76911074
@facebook-github-bot facebook-github-bot added CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. p: Facebook Partner: Facebook Partner labels Jun 18, 2025
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D76911074

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. fb-exported p: Facebook Partner: Facebook Partner
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants