【问题标题】:How to implement Hammer.js for the swipe event for devices without mouse如何为没有鼠标的设备的滑动事件实现 Hammer.js
【发布时间】:2014-08-19 12:18:24
【问题描述】:

如何实现 Hammer.js 以仅在没有鼠标的设备上捕获 swipeLeft 和 swipeRight 事件?

在hammer.js 的源代码中,我发现存在一个var INPUT_TYPE_MOUSE = 'mouse';。在文档中,我没有找到如何使用选项禁用它。

如果我只想使用滑动识别器,是否必须禁用预设中的所有识别器?

 preset: [
// RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]
[RotateRecognizer, { enable: false }],
[PinchRecognizer, { enable: false }, ['rotate']],
[SwipeRecognizer,{ direction: DIRECTION_HORIZONTAL }],
[PanRecognizer, { direction: DIRECTION_HORIZONTAL }, ['swipe']],
[TapRecognizer],
[TapRecognizer, { event: 'doubletap', taps: 2 }, ['tap']],
[PressRecognizer]
],

如何通过选项做到这一点?

【问题讨论】:

    标签: mouseevent swipe hammer.js


    【解决方案1】:

    要仅使用滑动识别器,您可以这样做:

    var mc = new Hammer.Manager(element, managerOptions);
    mc.add(new Hammer.Swipe(recognizerOptions));
    mc.on('swipeleft', leftSwipeHandler);
    mc.on('swiperight', rightSwipeHandler);
    

    在文档中的More Control Section 中有描述。

    这不仅可以识别触摸设备中的滑动,还可以识别使用鼠标的设备。我不知道如何禁用在鼠标设备中触发此事件。但我认为在事件被触发后,您可以在处理函数中检查导致事件的指针类型。为此目的使用事件的pointerType 属性:

    var leftSwipeHandler = function (event) {
      if (event.pointerType === 'mouse')
        return;
      // some more code
    }
    

    如果您使用 jquery 插件,则此属性位于 gesture 对象中:event.gesture.pointerType

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多