Super old thread, but I just encountered this problem so here's my solution. I have all the elements referenced in javascript. When a user types in the input, a list of search results is populated. Adding these results, combined with the iOS behavior of moving things around when the keyboard opens results in the bug, where once the keyboard is gone the container holding the input and div for results can't scroll.
// results is a div holding the results.
// As soon as the search returns and the results are
// added (even before the keyboard is gone) i run the
// code below and once the keyboard is gone things scroll
// properly. It's basically a hack to get the browser to
// recalculate positioning and rendering. class 'absolute'
// just sets the position to absolute from it's default 'relative'.
results.addClass('absolute');
// Force browser to assume there's upcoming rendering to do
results.element.clientHeight;
// remove class
results.removeClass('absolute');
It seems this works no matter which element its done on, the results container, or the parent, and it would probably work on other elements in that hierarchy too.