2015-02-03 5 views
0

Цель состоит в том, чтобы иметь компонент, в данном случае карусель, который реагирует на событие touchmove, когда пользователь перемещает свой палец слева направо, но не препятствует прокрутке по умолчанию вверх и вниз, даже если прикосновение возникает на компоненте, о котором идет речь, при условии, что пользователь перемещает палец по оси y за определенный порог.Предотвращение по умолчанию (прокрутка браузера) до тех пор, пока не будет выполнено условие?

Или, что более ясно, мне нужно отключить прокрутку браузера на сенсорных устройствах, пока сенсорная панель не сообщит об этом ОК и не включит ее снова.

Несмотря на несколько часов возиться, я смог полностью отключить прокрутку браузера или вообще не отключать его. Условное отключение не похоже на работу.

Основная логика:

  1. Запишите координаты на палец вниз (сенсорный старт).
  2. На сенсорном переключателе проверьте, превышает ли разница в Y более 200 пикселей.
  3. Если это так, разрешите по умолчанию прокрутку браузера, отключите прослушиватель touchmove.
  4. Если нет, не допускайте прокрутки по умолчанию, прокрутите влево/вправо.

Я тестировал это на iPad mini. Я обнаружил следующее:

  1. Вызов preventDefault() в обработчике touchstart останавливает весь браузер прокрутки для этого прикосновения, она не может быть повторно включена во время перетаскивания.

  2. Попытка условно предотвратить дефолт в обработчике dragmove ведет себя так же, как preventDefault в обработчике touchstart. То есть, он блокирует перетаскивание и игнорирует условие!

Условием, как это в dragmove:

if(Math.abs(MouseMoveDistanceY) < 200){ 
    if(ev.preventDefault){ev.preventDefault();} 
} 

... блоки вертикальной прокрутки постоянно, даже если порог превышен получает!

В любом случае, как я могу на сенсорных устройствах и в обработчике dragmove управлять передачей в браузере, когда выполняется условие? Что-то вроде «unPreventDefault()» было бы здорово. Какие-нибудь идеи?

ответ

0

Просто идея, поскольку я не могу дать вам прямой ответ, так что это больше похоже на другой подход .. но вы посмотрели на изменение страницы, чтобы на самом деле ничего не прокручивалось, когда на событие касания? т.е./зафиксировать высоту и скрыть переполнение.

+0

согласно вам, если это не ответ, вы могли бы поместить это в раздел комментариев –

+0

Извините, только что начали использовать это и не видели комментариев. Просто попытался переместить его и не могу вообще прокомментировать. – oakleyo0

Смежные вопросы