When using Voice Over in iOS, calling UIAccessibility.post(notification:argument:)
to announce a field error doesn\'t actually announce the error.
I have a
Your problem may happen because the system needs to take over during the field error appears and, in this case, any customed VoiceOver notification is cancelled.
I wrote an answer about problems with queueing multiple VoiceOver notifications that may help you to understand your current situation.
Your notification works with a breakpoint because you're delaying it and the system works during this time : there's no overlap between your notification and the system work.
A simple solution may be to implement a short delay before sending your notification.
Your retry mechanism is smart and could be improved inside a loop of few retries in case of many system takeovers.