Voice Over accessibility: UITableView

In our app, we display contacts in UITableView. Let us say I have 300 contacts in my AddressBook, and all of them will be displayed in this table.

Below this table, I have a UIButton to perform some action like invite selected contacts.

With Voice Over enabled, when I get to the UITableView, it doesn't let me to proceed to the UIButton, unless I go over all 300 contacts.

Is there a solution to override this and make it more friendly to the visually impaired users?

Replies

There isn't really a great way to override this, however I would argue this is what VO users expect. If you look at the built in apps that contain table views like Mail and Contacts, the behavior is the same, you need to swipe through all cells before exiting the table view. VO users have lots of other gestures and ways to get out of the table view, such as touch exploration, or using a 4 finger tap on the bottom half of the screen to get to the last element. You can also place each section (the table view and the button) inside their own containers, so that VO users can easily navigate between the 2 using the containers rotor.

You can do this by giving the containing view of the button and the table view each an accessibilityContainerType of UIAccessibilityContainerTypeSemanticGroup

I am trying something similar, I have a table and I need it to be a group since it is an infinite table, when you get close to the last element new ones are loaded. In the last answer @danax comments in native applications it is not done that way. However this is not true, in the mail application you can access three different containers, the navigation bar, the mail table and the bottom toolbar.

Here you have a link of the operation that I want to reproduce.

https://mega.nz/embed/10Bl0LTb#ZRcFJou-E5HvQtEV1RcnMO_iQIwqQoOj6MM7coE4uro

How could a similar performance be achieved with UIKit?