iOS Voice Over only reads out the title of any alert views

1.1k views Asked by At

My accessibility work on my app continues. The next issue I've discovered is that whenever an alertView appears, voice over only reads out the following

  • Alert
  • Alert Title

Even though I believe it's meant to read out the Alert Body as well.

To work around this issue I've had to do the following code

NSString *alertAction = notification.alertAction;
NSString *alertBody = notification.alertBody;

if (UIAccessibilityIsVoiceOverRunning())
{
  // TODO - iOS VoiceOver has a bug where it only reads out the alert action, not the body.. combine everything into one
  // for now so its read out together
  alertAction = [NSString stringWithFormat:@"%@, %@", alertAction, alertBody];
  alertBody = nil;
}

UIAlertController* alertController = [UIAlertController alertControllerWithTitle:alertAction
                                                                         message:alertBody
                                                                  preferredStyle:UIAlertControllerStyleAlert];


[alertController addAction:[UIAlertAction actionWithTitle:@"Ok" style:UIAlertActionStyleCancel
                                                       handler:^(UIAlertAction * action) {

                                                       }]];

[visibleViewController presentViewController:alertController animated:YES completion:nil];

To combine the title and message into one string which I use for the title. Clearing out the message.

This does seem to fix the problem, but it feels a bit clunky and obviously looks a little objectionable with so much text in the bold title font.

Anyone come across this issue, or got any other fixes to avoid having to butcher all my alerts this way?

Cheers

0

There are 0 answers