iOS Accessibility Voice Over not working as expected in table view with tall header view - ios

I've got a table view which is displaying detail information about a session at a conference (think WWDC or Google I/O). The bulk of the information is in a flexible-height header view, but there is a need to link to an arbitrary number of speakers and related sessions. This is accomplished with individual table view cells. So the structure of the page is a very tall header (over 1000pt), followed by lists of speakers and other sessions in cells.
The problem I'm encountering is getting accessibility voice over to work properly: when you advance the voice over down the content to the bottom of the header view, the first cell hasn't dequeued yet. Since the cell and its content don't exist, the voice over targeting just jumps to the tab bar at the bottom of the screen. If you manually scroll the table view down so that the first cell is visible, then turn on voice over, the stepping works as expected, since every cell is pulled up high enough to cause the next cell to dequeue.
How can I cause the voice over accessibility stepping to cause the table cells to begin dequeueing so that voice over continues all the way to the bottom of the dynamic content?

There may be a more correct way to do this, but at the suggestion of a co-worker, I tried making the table view taller than the header in viewDidAppear and set the content and scroll indicator insets so that it still looks like it did before. This has the effect of forcing the cells to begin dequeueing immediately, which allows voice over to flow all the way through the content.

Related

How to move accessibilty focus from UITableViewHeader to Cell in UITableView in iOS

I have one UITableView where I am adding a header using UITableHeaderView.
The header view is occupying fit to screen in small devices because of its content. And in accessibility it's not moving from table header view to table cell since those cell are not getting visible in screen.
This is working fine in iOS8 but not in iOS9.
I know accessibility post notification should work, but not sure where to fire the notification since there is no way to know that content reading done for table header view.
I would like to answer my own question. I fixed the issue by using accessibilityElementDidBecomeFocused. I checked for last label in header view whenever receives i scrolling table on tab so that other cell could get visible and voiceover can move to next element.

Is is possible to control the speed and scrolling of a UITableView

I've got custom tableview cells that are 170 px tall. Including the table header I can see two complete cells and a portion of the third. When I scroll the tableview, the cells shift up but do not stop until a portion of the third is above the table.
Is it possible to change the way the table scrolls and allow me to see all of the third cell. A video illustrating the issue is available at https://youtu.be/iuhuR_wDe90
Images of the issue:
It seems you have enabled 'pagination' on your UITableView.
You can get rid of this in Interface Builder, in the Scroll View section there's an option called 'Paging Enabled' which should be switched off.
If you don't use storyboards, tableView.pagingEnabled = NO; will do the trick as well (though it is NO already by default).

UITableView Show a "loading spinner" when scrolled passed bottom

I would like to show a "spinner" at the bottom of my table (like the current Twitter iPhone App) when my users scroll passed the last cell in my table.
I thought about adding a static cell and adding 1 additional row to show the cell at the bottom, however, I think this is going to look crappy if I only have, say, 2 cells.
I looked through a bunch of Google searches, however, I didn't really see an answer. I thought about pulling up a "loading view" once my scroll view for the table reached a certain point, however, I think I may be over-thinking the situation.
Any help or direction would be awesome... thanks.
I would recommend that you add a UIActivityIndicator to a view and set that view as the UITableView's footer view.

UITableView Section Headers not visible when table in visible rect

I have a UIScrollView with 3 UITableViews stacked horizontally. I switch between these tableviews using a tab-controller on top. However, when I switch to the 2nd or 3rd tab and switch back quickly to 1st the section headers don't show. They display when I scroll the tableView. These are custom headers (jfyi). I tried calling setNeedsDisplay when the tableView is visible, but that does not help because as per Apple Docs :
If you simply change the geometry of the view, the view is typically not redrawn. Instead, its existing content is adjusted based on the value in the view’s contentMode property. Redisplaying the existing content improves performance by avoiding the need to redraw content that has not changed.
Since, only the geometry of the view is changing here, it does not help. Also this happens on all versions iOS 5~6.1 and on simulator and device. Thankfully, this does not crash the app, but its a problem nevertheless. Could someone help? I am attaching pictures for reference. First shows the problem, second: after scrolling the "head(er)less" tableview
EDIT:
I am using simple scrollRectToVisible:animated: to switch between tableviews. This does the trick but I just observed that when I set ...animated:NO all is okay. The problem happens when ...animated:YES
It seems the issue of displaying and scrolling taking place simultaneously for the respective tableview. So what you can do here is:
Remove the scroll animation
or
Just scroll the tableview to top on the tab press event
or
simply reload the tableView which is made visible

Number of Cell prototypes exceeds tableview height

I have a tableview that has a large number of fairly tall dynamic cells. I've tried creating the prototypes for these but I've run out of height room in the view.
I can't seem to extend the height of the table view, (or the view it's in). I also can't create the tableview outside the viewController, give it a larger height, and just link to it.
Suggestions? I know I can create the cells programmatically or from a separate nib, but I'd really like to do it via storyboard.
thanks,
Just figured this out myself. Try this:
Double-click the table almost anywhere except where there's an existing control. You can also double-click on the outer edge of the table.
Note that the table view will show a highlighted section that aligns with the cell you've clicked. You've entered some sort of selection mode.
Now use the mouse to scroll up or down. The cells will shift up or down as if you were running the app.

Resources