Hammer.js阻止iOS Safari上的滚动事件

时间:2014-10-16 19:26:42

标签: javascript ios safari touch hammer.js

我已将Hammer.js事件添加到我网站上的元素中。他们都正确地射击,一切都很好,但一个问题引起了我的设计师的注意。他注意到当你尝试用手指在元素上滚动页面时,没有任何反应。不幸的是,这是一个游戏破坏者。

所以我的问题是,在使用Hammer.js时如何保留滚动。

谢谢!

1 个答案:

答案 0 :(得分:3)

对于那里寻找解决方案的人来说,这就是我想出来的。

this.$hammer = $('img').hammer();
this.$hammer.on('touchstart', fingerDown)
            .on('touchend', fingerUp)
            .on('pinch', setScale);

function fingerDown(e) {
  var fingersDown = e.originalEvent.touches.length;

  if (fingersDown > 1) {
    // Lock Scrolling over the zoom element by allowing Hammer.js to fire pinch events.
    toggleHammerScrolling(true);
  }
}

function fingerUp(e) {
  toggleHammerScrolling(false);
}

function toggleHammerScrolling(shouldScroll){
  //This is where your implementation may change. Just do .get('pinch').set... on your own hammer object.
  this.$hammer.data('hammer').get('pinch').set({
    enable: shouldScroll
  });
}

function setScale(){
  console.log('do pinching stuff here');
}