Nota: Parece que UIWebView no soporta requestAnimationFrames. ¡Gracias a Guillaume Gendre por señalarlo!
Nos encontramos con un problema similar con una aplicación web en la que estamos trabajando.
Para nosotros, fue el tacto lo que causó problemas. Implementamos una solución (que se encuentra aquí: https://gist.github.com/3755461) que parecía funcionar bastante bien hasta que otro problema nos obligó a abandonarla. (Intenté agregar la solución al violín y pude hacer que el temporizador se disparara una o dos veces, pero requería un extraño gesto + evento de desplazamiento que era casi imposible de reproducir de manera consistente.)
De todos modos, uno de los las nuevas características en iOS 6 para los desarrolladores son requestAnimationFrames. Mi solución es básicamente un contenedor para temporizadores, que permite al desarrollador pasar un booleano, que llamará a la función nativa o a la función alternativa.
Por ejemplo:
setTimeout(function(){alert("HI")}, 1000); // using native
setTimeout(function(){alert("HI")}, 1000, true); // using workaround
Éstos son formas adicionales de utilizar la solución:
setInterval(function(){console.log("Interval")}, 1000, true);
var timer = setTimeout(function(){ /* ... */ }, 60000, true);
clearTimeout(timer);
var interval = setInterval(someFunc, 10000, true);
if(someCondition) clearInterval(interval);
Aquí hay dos violines con los ejemplos de solución. Trate pizca/zoom en las casillas negras:
http://jsfiddle.net/xKh5m/embedded/result (Usos nativa setTimeout
función) http://jsfiddle.net/ujxE3/embedded/result
Hemos estado utilizando esta solución durante unos meses en un entorno de producción, y no se han topado con problemas importantes .
Aquí hay una esencia pública de la solución: https://gist.github.com/4180482
Aquí hay más información sobre requestAnimationFrames:
MDN documentation
Paul Irish on requestAnimationFrame
Buena suerte!
gracias por su respuesta muy detallada, pero como mencionó, esta no es la solución correcta a mi problema. Pero ahora, creo que este es un error introducido en iOS6 y no una característica nueva. – kiwi1342
Parece una solución para mí. –
Esto es enorme, me salvó un dolor de cabeza seguro. Más personas necesitan ver esta solución – eivers88