Estoy usando una cuadrícula Muuri con elementos que se pueden arrastrar. En el escritorio, los usuarios pueden usar la rueda del mouse para desplazarse; sin embargo, tuve que agregar un controlador de eventos para verificar si el usuario retiene el elemento durante x tiempo, luego puede arrastrar el elemento. Si se mueven inmediatamente una cierta distancia, evita el arrastre y desplaza la vista mediante programación con window.scrollTo.
Esto funciona bien en las pantallas táctiles de Android y Windows, pero la pantalla salta en los iPhone. Peor en Safari pero aún ocurre en Chrome. Intenté usar atributos de estilo webkit que algunos artículos mencionan para un desplazamiento más suave, usé diferentes comportamientos de desplazamiento, me aseguré de que los cálculos condujeran a un valor de número entero superior (solo configuración superior) de 0 o superior, y lo único que marcó la diferencia fue la configuración un retraso. Un retraso mayor (100 ms) entre las llamadas scrollTo parece resolverlo, pero no es fácil para el usuario.
El contenido del evento de movimiento es simplemente la llamada al método:
window.scrollTo({top: initialTop + yStart - yEnd})