Skip to content
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

VoiceOver screen reader just reads out 'button' on trigger component. #147

Open
trcoffman opened this issue Mar 7, 2025 · 8 comments
Open

Comments

@trcoffman
Copy link

Hi there,

Our app is using Zeego 1.10.0 and I'm having trouble with my trigger component just saying 'button' on iOS when I focus it with VoiceOver.

How can I get the aria label on the trigger to apply?

I really love this library and appreciate all your hard work. I just want to make sure that I can deliver an accessible experience as many users of our app are people with visual impairments.

@nandorojo
Copy link
Owner

Hey! Want to poke into the code for createIosMenu? Happy to merge a PR for this!

@trcoffman
Copy link
Author

@nandorojo I just got the example app running, so this at least works perfectly fine in the example app on v3. We are using v1.10.0 in our app, so i'm not sure yet whether or not I'm doing something wrong or if this isn't supported in older versions.

I'll investigate further but I would guess most likely I'm doing something wrong.

@nandorojo
Copy link
Owner

nandorojo commented Mar 7, 2025

Upgrading to Zeego 3 from 1 only really has breaking changes if you use Web. If you don’t use web, it’s basically just a version bump and type fixes (plus the native library version changes)

@trcoffman
Copy link
Author

trcoffman commented Mar 7, 2025

We do use the web version. It looks like upgrading won't fix the issue though. I experimented with turning off new architecture in the example app, and discovered that the new architecture has to be enabled for DropdownMenu.Trigger to be accessible.

If I disable new architecture, the example app shows the same issue we are having in our app, where the Dropdown's trigger simply reads out as 'button'.

What's interesting is that the ContextMenu's trigger does seem to work under old architecture. The issue seems to be only with DropdownMenu.

I'll dive deeper next week. We can't move to new architecture yet as we have too many dependencies that have regressions when going to new architecture.

@nandorojo
Copy link
Owner

Is it just a matter of forwarding down props to the iOS library?

@trcoffman
Copy link
Author

It's too early to say what the issue is. I have no idea yet.

@trcoffman
Copy link
Author

@nandorojo I think the issue likely has to be investigated & fixed in @react-native-menu/menu package.

Depending on what I come up with when attempting to fix that library, Zeego might also need changes as well, but I don't know what those would look like yet.

@trcoffman
Copy link
Author

@nandorojo I didn't realize that you only use @react-native-menu/menu on android.

I was able to figure out what the problem is there in that library w.r.t. IOS accessibility. But it looks like I was debugging the wrong library. However, I'm betting that the same fix would probably also apply to react-native-context-menu which is to make the UIButton that wraps the trigger view have self.isAccessibilityElement = false.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants