element-hq / element-hq/element-ios
A11y: Context menu for messages is inaccessible to VoiceOver, accessibility actions for message cells are missing.
- Dominant language
- Swift
- Stars
- 1.8k
- Forks
- 544
- PR merge metrics
- PR metrics pending
Description
### Steps to reproduce
The context menu that is available for message cells, containing options such as reply, react, etc. is inaccessible to VoiceOver currently.
Bringing this up requires a sighted user to perform a long press on the message cell which can't be easily / reliably done with VoiceOver, this can be resolved by exposing the context menu options using UIAccessibilityCustomAction, see https://developer.apple.com/documentation/uikit/uiaccessibilitycustomaction.
Steps to reproduce:
1. Enable VoiceOver.
2. Open a room or 1:1 conversation in Element-iOS that contains messages.
3. Move VoiceOver focus to a message.
4. Swipe down with one finger.
### Outcome
#### What did you expect?
Using VoiceOver, swiping down while a message is in focus should result in the various context menu options being announced, e.g. reply, react, etc.
Performing a double-tap should then perform the selected context menu option.
#### What happened instead?
Context menu options are currently not accessible using VoiceOver, as UIAccessibilityCustomAction has not been implemented for the various menu items.
### Your phone model
iPhone 13 Pro
### Operating system version
iOS 15.6
### Application version
Element V1.8.22
### Homeserver
_No response_
### Will you send logs?
No
Contributor guide
Research direction
Start with the message cell implementation in Element-iOS and read Apple's UIAccessibilityCustomAction documentation linked in the issue. Reproduce the VoiceOver steps on an iPhone, expose the message context-menu options such as reply and react, and verify that swiping selects an action and double-tapping performs it.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- ios, swift
- Domain
- accessibility, mobile-dev
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100