Estoy usando iScroll.js para desplazarme por un carrusel de elementos en una página móvil. He encontrado la siguiente solución que detecta el movimiento vertical y se detiene el guión iScroll tomar el control, dejando que el desplazamiento vertical nativa suceda:iScroll - Preservar desplazamiento vertical nativo - funciona en iOS, no en Android
onBeforeScrollStart: function(e) {
try {
point = e.touches[0];
pointStartX = point.pageX;
pointStartY = point.pageY;
} catch(e) {}
null;
},
onBeforeScrollMove: function(e) {
try {
deltaX = Math.abs(point.pageX - pointStartX);
deltaY = Math.abs(point.pageY - pointStartY);
if (deltaX >= deltaY) {
e.preventDefault();
} else {
null;
}
} catch(e) {}
}
estoy usando try {} catch {} ya que tenía algunos problemas cuando se prueba en un navegador (se quejó de que el punto no está definido).
El problema que tengo es que funciona bien en iOS, probado en varios dispositivos i, pero en Android no es tan bueno. Si un usuario intenta desplazarse verticalmente por la página, comenzando por colocar el dedo en el carrusel, la página no se desplaza, ya que iScroll todavía tiene control.
¿Alguna idea de cómo puedo hacer que funcione en Android, o cualquier sugerencia hacia dónde podría estar yendo mal?
Editar:
Algunos depuración y he descubierto posiblemente por qué esto no está funcionando. Las coordenadas se actualizan mientras el usuario toca la pantalla en iOS, pero en Android, solo se captura el primer conjunto de coordenadas. ¿Alguna idea de por qué esto sería?
¿Ha intentado utilizar 'myScroll.disable()' y 'myScroll.enable()'? –