6

When I add accessibilityCustomActions to an object, it works correctly on the device as far as being able to swipe up and down through the actions and select them, but there are no announcements that there are "Actions available" - should I write this in to the accessibilityLabel myself?

I thought that by adding the custom actions to my object, it would announce "Actions available" automatically, or "Swipe up to select..."

Nathaniel Flick
  • 2,902
  • 2
  • 22
  • 31
RanLearns
  • 4,086
  • 5
  • 44
  • 81

1 Answers1

7

I thought that by adding the custom actions to my object, it would announce "Actions available" automatically, or "Swipe up to select..."

And you're right, it should have read out these announcements but this weird behavior has been introduced making itself scarce in iOS 13.

"iOS 13 introduced a new custom actions behavior: the "actions available" announcement isn't always present anymore.
It was previously offered to every element containing custom actions but, now, it will occur when you navigate to another element that contains a different set of actions.
The purpose is to prevent repetitive announcements on elements where the same actions are present as the previous element"
source

Nothing can be done to undo this behavior that is all but efficient for the VoiceOver users.
Moreover, if you do the same in iOS 12, it works perfectly: custom actions are present and announced every time they are implemented for an accessible element.

Unfortunately, in iOS 13, this is a new behavior explained by the Apple support itself (accessibility@apple.com) but with no public presentation (WWDC, Apple website...) and that's insane for such a huge modification that's more a problem than a significant evolution for sighted impaired people using VoiceOver.

No solutions are suggested by the support and we'll have to deal with this unless a rollback is engaged in the next WWDC... light a candle.

⚠️ ⬛️◼️▪️ EDIT ▪️◼️⬛️ ⚠️ (2020/03/19)

I wrote a Developer Technical Support Incident (no 730330678) for this problem and here's the answer from Apple:

There is no published information.
We intentionally made changes in iOS 13, so that we would only speak actions available if the list of actions had changed from the previous element you were on, or you moved to a different container.
You can do a flash manipulation of the list or bounce quickly between containers but this should just work without code changes.
Unfortunately in currently shipping systems it is a bug.
We are improving our documentation as well so please stay tuned.

I submitted a bug report entitled VoiceOver doesn't read out the custom actions anymore with the reference FB7426771.

Now, you know why Accessibility Custom Actions aren't announced in Swift... only sometimes in iOS 13.

XLE_22
  • 5,124
  • 3
  • 21
  • 72
  • I very much appreciate your feedback, your bug report, and your explanation about the change in behavior from iOS 12 to iOS 13. If I find out any additional information or resolution about this behavior of VoiceOver, I will definitely share it here and let you know. – RanLearns Mar 16 '20 at 20:10
  • Thank you for the info. I ran into the same issue, where it works on iOS14, but not on iOS15 anymore. Any idea for a workaround? – Markus Sep 27 '22 at 14:39
  • @Markus I haven't this problem anymore, even in iOS 15. Have you ticked the box Accessibility-VoiceOver-Verbosity-Actions-Speak in your device settings to make it work as expected? – XLE_22 Oct 10 '22 at 09:02
  • 1
    @XLE_22 Thank you for pointing out this setting!! It seems this is actually a bug in iOS 15. If you never set it, there is no default selection, which prompts iOS15 to omit the output (once it's set you can get back to that undefined state only by factory reset). Which put me in the awkward position that it's now read twice since the custom actions are business critical to be pointed out (I can't assume a new user will always set this value and I couldn't find a way to detect if it is set or not) – Markus Oct 23 '22 at 02:44
  • @Markus Glad to see it was helpful. However, it's definitely a problem to not be aware of this setting's state that should be seen as an event with possible notifications for developers (https://a11y-guidelines.orange.com/en/mobile/ios/development/#accessibility-options) like many other a11y options (https://a11y-guidelines.orange.com/en/mobile/ios/design/#accessibility-options). Besides, I never heard Apple speak of the setting I mentioned... unless I missed something. – XLE_22 Oct 23 '22 at 12:37
  • @Markus Source of this tip for the custom actions⟹ https://a11y-guidelines.orange.com/en/mobile/ios/development/#custom-actions – XLE_22 Nov 14 '22 at 10:26