De hecho, estoy teniendo el mismo problema exacto. Lo he reducido al hecho de que afecta a DIVs cuyo contenido ya no requiere desplazamiento cuando se cambia la orientación.
En su ejemplo. El DIV en la derecha se desplaza en el paisaje, NO NECESITA desplazarse en vertical, pero luego necesita desplazarse nuevamente. He probado esto cuando ambos DIV (izquierdo y derecho) necesitan desplazarse independientemente de la orientación y no es un problema.
ACTUALIZACIÓN:
De hecho, me parece que hemos solucionado este!
El problema parece ser un problema de tiempo. Durante el cambio de tamaño, el contenido interno no es lo suficientemente grande como para garantizar el desplazamiento en el DIV externo que tiene desbordamiento. Después de pasar un día en esto, que finalmente ocurrió con este truco:
<div id="header" style="position:fixed; height:100px">Header</div>
<div id="content" style="overflow: auto; -webkit-overflow-scrolling: touch">
<div id="contentInner">
content that is not long enough to always scroll during different orientations
</div>
</div>
Aquí es mi lógica cada vez que cambia el tamaño de la página:
function handleResize()
{
var iHeight = $(window).height() - $("#header").height();
// Height needs to be set, to allow for scrolling -
//this is the fixed container that will scroll
$('#content').height(iHeight - 10);
// Temporarily blow out the inner content, to FORCE ipad to scroll during resizing
// This is a timing issue where the inner content is not big enough during resize post orientation to require the outer DIV to scroll
$('#contentInner').height(1000);
// Set the heights back to something normal
// We have to "pause" long enough for the re-orientation resize to finish
window.setTimeout(delayFix, 10);
}
function delayFix()
{
var iHeight = $(window).height() - $("#header").height();
// Inner divs force the outer div to always have at least something to scroll. This makes the inner DIV always "rubber-band" and prevents
// the page from scrolling all over the place for no reason.
// The height of the inner guy needs to be AT LEAST as big as the container and actually a nip bigger to cause the
// scrollable area to 'rubber band' properly
$('#contentInner').height(iHeight + 20);
}
Me olvidé completamente de esta pregunta, en realidad terminé descifrándolo también, con la misma solución que usted. Debería haber puesto el código nuevamente aquí, te ahorré algo de tiempo, ¡Uy! Gracias :) :) – will
Encontrado de otra manera si alguien está interesado ... Cualquier comentario es bienvenido. Vea abajo. –
Eso realmente funciona genial. Lástima que el problema tiene que estar allí en primer lugar. –