Nota: Sembra UIWebView non supporta requestAnimationFrames. Grazie a Guillaume Gendre per averlo indicato!
Abbiamo riscontrato un problema simile con un'app Web su cui stiamo lavorando.
Per noi, è stato il touchmove a causare problemi. Abbiamo implementato una soluzione alternativa (trovata qui: https://gist.github.com/3755461) che sembrava funzionare abbastanza bene fino a quando un altro problema ci ha costretto ad abbandonarlo. (Ho provato ad aggiungere la soluzione al tuo violino ed è stato in grado di far scattare il timer una o due volte, ma ha richiesto un gesto strano + evento di scroll che era praticamente impossibile riprodurlo in modo coerente.)
In ogni caso, uno dei le nuove funzionalità di iOS 6 per gli sviluppatori sono requestAnimationFrames. La mia soluzione è fondamentalmente un wrapper per i timer, che consente allo sviluppatore di passare un valore booleano, che chiamerà la funzione nativa o la soluzione alternativa.
Ad esempio:
setTimeout(function(){alert("HI")}, 1000); // using native
setTimeout(function(){alert("HI")}, 1000, true); // using workaround
Qui ci sono altri modi per utilizzare la soluzione:
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);
Qui ci sono due violini con gli esempi di soluzione. Prova pinch/zoom sulle caselle nere:
http://jsfiddle.net/xKh5m/embedded/result (Utilizza nativa setTimeout
funzione) http://jsfiddle.net/ujxE3/embedded/result
Abbiamo utilizzato questa soluzione per un paio di mesi in un ambiente di produzione, e non hanno eseguito in tutte le questioni importanti .
Ecco un succo pubblico della soluzione alternativa: https://gist.github.com/4180482
Ecco ulteriori informazioni su requestAnimationFrames:
MDN documentation
Paul Irish on requestAnimationFrame
Buona fortuna!
grazie per la tua risposta molto dettagliata ma come hai detto questa non è la soluzione corretta al mio problema. Ma ora, penso che questo sia un bug introdotto in iOS6 e non qualche nuova funzionalità. – kiwi1342
Sembra una soluzione per me. –
Questo è enorme, mi ha salvato un mal di testa di sicuro. Altre persone hanno bisogno di vedere questa soluzione – eivers88