2012-04-28 13 views
6

Intento trabajar en una interfaz en html5 para dispositivos móviles. trato de seguir un movimiento, con touchstart/touchmove/touchend/touchcancel. pero cuando intento seguir un Mouvement i Allways quikly tengo au 'touchcancel' y no más touchmove entonces ...html5/android touchcancel

cuando intento esto: http://miniapps.co.uk/code/touchcancel/ que funcionan perfectamente, no tengo ningún problema.

Pero creo que el problema proviene del movimiento del navegador que interfiere con mi lienzo. ¿Sabes que puedo arreglar esto?

// intento explicar más: - Aquí está mi código de prueba: http://frys.free.fr/mNaissance/test.html que es el "rompecabezas" código de rompecabezas que trato de hacer que el trabajo con un móvil. Tuve un "registro" div en el texto. Y cuando hago "touchmove" en el lienzo gris tengo muy rápido un 'touchcancel' y ya no 'touchmove' ¿Está más claro? disculpa mi pobre ingles !

Gracias por la ayuda

+0

No tengo idea de qué estás hablando. Por favor sea más preciso. Y posiblemente agregue código que no funciona, o más ejemplos que expliquen lo que ha intentado – Entreco

+0

Me encontré con algo que creo que es el mismo problema: la pregunta es: "El navegador Android a veces dispara un evento touchcancel sin motivo obvio, ¿por qué?" // el mismo código funciona bien en dispositivos iOS – Corkscreewe

+0

Sus enlaces no funcionaron, pero esta pregunta SO puede tener algunas pistas: http://stackoverflow.com/questions/15944197/ –

Respuesta

7

creo que descubrí la razón de esto - navegador de Android (al igual que Chrome para Android 4.0 o superior) cree que está tratando de desplazarse, por lo que desencadena el evento touchcancel. Lo que debe hacer es

event.preventDefault(); 

en el evento touchmove que está capturando.

+2

Mi caso estaba relacionado, pero el uso de esto no lo hizo ayuda. Para aquellos que pueden tener un problema vagamente relacionado con el de OP, consulte esta pregunta SO: http://stackoverflow.com/questions/15944197/ –

+0

Esta solución ahora también se aplica a la versión de escritorio de Chrome por las mismas razones. – thure

+1

Esto no está relacionado solo con el navegador de Android, esto es por diseño porque el navegador debe tomar acciones como pan y zoom de forma automática en todos los casos. Por ese motivo, el navegador dispara el evento 'touchcancel' cuando toma el' touchmove' evento, para evitar la ejecución de 2 acciones diferentes para el mismo evento (esto tendría resultados terribles) – andreszs