Dynamically updating content in a UITableView accessible to VoiceOver

I'm trying to make my application more accessible, and so far, the usual accessibility features like shortcuts and tooltips have worked wonders. However, I am facing the problem of dynamically updating the content displayed in the UITableView.

Every row in the table is updated every second or so, but if I try to create every cell of the accessibilityLabel at this point, then I find that the VoiceOver reading problem on the selected shortcut keeps interrupting itself as the content of the shortcut changes so the system just starts reading the contents of the shortcuts from from the very beginning (actually the odd quirk shows that the voice sometimes works correctly for the first cell that was selected, but when a new cell is selected, this error is returned).

I tried to see, still try to figure out if VoiceOver is active, but as far as I can see there is only a notification sent when VoiceOver finishes

UIAccessibilityAnnouncementDidFinishNotification

      

There is no equivalent notification when VoiceOver starts. This way my TableViewController doesn't know that VoiceOver is currently active and that it shouldn't update any accessibility labels.

I was hoping I could at least detect that one of my TableView cells was the selected accessibilityElement with

accessibilityElementIsFocused

      

method. However, in all my tests, I have not been able to see this reliable fire for the custom UITableViewCell.

I also tried to implement a getter for the accessibilityLabel for my custom cell, hoping it might work, but unfortunately the same behavior happens.

The only solution I am left with is a user configurable frequency for dynamic content availability updates, say 5, 10, 20 seconds ... which might block me updating my shortcut until I know the last changed content is definitely were read out. In fact, even this could be aborted if the user selected a cell 8 seconds after the last update, 2 seconds within the 10 second limit, and the notch would update, causing the voice to restart.

Does anyone have any ideas on how best to handle this dynamic updating content? I'm guessing tableview cells complicate things a bit, but overall I just don't understand how Apple expects you to handle dynamic content. All it needs to be decided is another notification

UIAccessibilityAnnouncementDidStartNotification

      

Or better yet, a method to find out if VoiceOver is active. But I can't seem to find anyone!

Thanks for your time, really appreciate any advice on this matter. Hooray!

+3


source to share


1 answer


You want to do two things. First, you want to take advantage of the "Updates frequently" feature. This should improve the behavior of the application when content is enabled.

An image of the Accessibility section of Interface Builder in XCode



This should help a lot. Then you need to give the user the option to stop updating the content. Regardless of whether you follow the above, it is an absolute requirement for 2.2ag 2.2.0 WCag 2.0 compliance.

+1


source







All Articles