Sto provando a creare una pagina Web che rileva il tocco dell'utente e trascina e obietta lungo la tela.Browser Android: touchcancel viene attivato anche se touchmove ha impedito Default
così sto facendo qualcosa di simile:
var touchStart = function(e) {
e.preventDefault();
// Do stuff
}
var touchMove = function(e) {
e.preventDefault();
console.log("Touch move");
// Move objs
}
var touchEnd = function(e) {
e.preventDefault();
console.log("Touch start!");
// clean up stuff
}
var touchCancel = function(e) {
e.preventDefault();
// Oh NO touch cancel!
console.log("Touch cancel!");
}
bindElemOrig.addEventListener('touchstart', touchStart, false);
bindElemOrig.addEventListener('touchmove', touchStart, false);
bindElemOrig.addEventListener('touchend', touchStart, false);
bindElemOrig.addEventListener('touchcancel', touchStart, false);
E funziona bene fino a un certo punto.
Il problema è che, non appena si carica troppi objs, mi sembra che la touchmove impiega troppo tempo per rispondere, e touchcancel viene attivato. Il problema è che non appena viene attivato lo touchcancel non ricevo più altri touchmove s, e non riesco più a percepire il movimento.
Qualcuno ha affrontato questo problema? Conosco il bug in Android in cui è necessario chiamare preventDefault (touchend event in ios webkit not firing?) ma in questo caso sembra che non funzioni a causa del carico di memoria.
Grazie!
Sto riscontrando lo stesso problema su Android 2.3. Android 4+ sembra essere ok. Hai trovato qualcosa su questo argomento? – dioslaska
@dioslaska shim @ https: // github.com/TNT-RoX/android-swipe-shim –
Per riferimento futuro, la risposta qui funziona perfettamente: http://stackoverflow.com/questions/10367854/html5-android-touchcancel –