Я пытаюсь использовать drag для перемещения div назад и вперед. Эта часть работает нормально, пока у div нет прокручиваемого содержимого. Это не проблема на рабочем столе из-за полосы прокрутки, но проблема возникает на сенсорных устройствах. Поскольку событие touch конфликтует с событием перетаскивания, я не могу прокручивать содержимое. Я попытался создать условие, чтобы определить, было ли сопротивление более горизонтальным, чем вертикальное.Draggable блокирует событие касания
Моя надежда состояла в том, чтобы предотвратить перетаскивание во время взаимодействия с вертикальным касанием, но метод перетаскивания пользовательского интерфейса все еще срабатывает и переопределяет событие касания. Я использую плагин touch-punch, чтобы сделать перетаскиваемую работу на сенсорных устройствах, поэтому, возможно, что-то там осложнило ситуацию. Было бы здорово, если бы я мог предотвратить перетаскивание метода пользовательского интерфейса, пока не будет выполнено условие горизонтального перетаскивания. Я думаю, это устранит вмешательство.
// note the condition inside the drag function
start: function(e){
// get starting point of the drag
startDragX = e.pageX;
startDragY = e.pageY;
},
drag: function(e, ui){
// prevent drag until user has moved 30px horizontally
if (Math.abs(e.pageX - startDragX) < 30){
ui.position.left = 0;
} else {
if (ui.position.left < 0) {
// left drag
ui.position.left = ui.position.left + 30;
} else {
// right drag
ui.position.left = ui.position.left - 30;
}
}
}
Вот скрипка, чтобы продемонстрировать проблему (тест на сенсорном устройстве): http://jsfiddle.net/jTMxS/2/