【问题标题】:Hammer.js is blocking scroll events on iOS SafariHammer.js 正在阻止 iOS Safari 上的滚动事件
【发布时间】:2014-10-16 19:26:42
【问题描述】:

我已将 Hammer.js 事件添加到我网站上的元素中。它们都正确触发并且一切都很好,但是一个问题引起了我的设计师的注意。他注意到,当您尝试用手指在元素上滚动页面时,什么也没有发生。不幸的是,这是一个游戏破坏者。

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

谢谢!

【问题讨论】:

    标签: javascript ios safari touch hammer.js


    【解决方案1】:

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

    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');
    }
    

    【讨论】:

    • 这似乎不适用于最新的hammer.js 2.0.x。无法再为touchstarttouchend 注册事件处理程序。
    • 什么对我有用:我使用hammer.js 处理tappress 事件,而我依靠touchstarttouchmovetouchend 手动处理捏合手势。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-18
    • 1970-01-01
    • 2013-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多