Повторное включение сенсорного перемещения событий. приложение для iPhone с пробелом в телефоне - PullRequest
7 голосов
/ 20 сентября 2011

В верхней части моего js (что необходимо для работы плагина iScroll) у меня есть следующее.

document.addEventListener('touchmove', function (e) {e.preventDefault();}, false);

На некоторых страницах мне нужно снова включить эту обычную прокрутку iPhoneвступает во владение (и исправляет ошибки, когда клавиатура iphone не выскакивает в поле ввода, когда на странице используется iscroll).

Я не могу обработать синтаксис.Кто-нибудь знает как?

Ответы [ 2 ]

12 голосов
/ 20 сентября 2011

Вам необходимо определить функцию, которая обрабатывает поведение protectDefault, например:

document.addEventListener('touchmove', preventDefault, false);
function preventDefault(e) { e.preventDefault(); };

Таким образом, в дальнейшем вы можете удалить прослушиватель событий и снова включить прокрутку по умолчанию:

document.removeEventListener('touchmove', preventDefault, false);

Теперь вы можете повторно добавлять и удалять его в любое время.

Вы не можете сделать это с помощью встроенной анонимной функции, как в исходном сообщении, потому что единственный способ, которым выМожно сослаться на анонимную функцию, чтобы сначала дать ей сработать, а затем удалить ссылку на нее, например:

document.addEventListener('touchmove', function(e) {
    e.preventDefault();

    // some more logic...

    this.removeEventListener('touchmove', arguments.callee, false);
}, false);

Очевидно, что это не тот эффект, который вы хотели бы получить.Вы также можете создать объект и сохранить ссылку на метод, который обрабатывает событие.Если вы хотите погрузиться немного глубже, я нашел эту тему полезной: Как удалитьEventListener для анонимной функции?

0 голосов
/ 11 мая 2013

после добавления addEventLister на моем iphone я больше не могу их удалить. но это работает для меня.

var prevent = preventDefault(e) { e.preventDefault(); };
//To disable drag
element.ontouchmove = prevent;

...

//To enable it agian
element.ontouchmove = null;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...