Вы поставили меня на правильный путь, Стефан, заставив меня думать иначе.Для тех, кто все еще ломает голову над этим, вот мое решение.
Я пытался позволить посетителям прокручивать изображения по горизонтали, не прерывая вертикальную прокрутку.Но я выполнял пользовательские функции и ждал вертикальной прокрутки.Вместо этого мы должны сначала разрешить обычное поведение и ждать, пока не произойдет определенный жест, как это сделал Стефан.
Например:
$("img").on("touchstart", function(e) {
var touchStart = touchEnd = e.originalEvent.touches[0].pageX;
var touchExceeded = false;
$(this).on("touchmove", function(e) {
touchEnd = e.originalEvent.touches[0].pageX;
if(touchExceeded || touchStart - touchEnd > 50 || touchEnd - touchStart > 50) {
e.preventDefault();
touchExceeded = true;
// Execute your custom function.
}
});
$(this).on("touchend", function(e) {
$(this).off("touchmove touchend");
});
});
Таким образом, в основном мы разрешаем поведение по умолчанию, пока горизонтальное движение не превысит 50пикселей.
Переменная touchExceeded
гарантирует, что наша функция по-прежнему будет работать, если мы повторно введем начальную область <50 пикселей. </p>
(Обратите внимание, что это пример кода, e.originalEvent.touches[0].pageX
НЕ пересекаетсясовместимый с браузером.)