情况:Cordova 跨平台移动应用程序上的 hammer.js 2.0.4、jQuery 2.1。我遇到了有据可查的( for example )点击事件延迟问题,所以我想我会为此尝试 hammer.js。它在我的 iPad 上运行得非常好,但在我的 Android 手机 (Android v4.4) 上却很糟糕:响应速度非常慢,并且经常完全错过点击。
我实现了自己的轻敲检测(使用 mouseUp 事件),它在我的 Android 上比 Hammer.js 表现得更好(但在我的 iPad 上表现得非常糟糕)。
所以我的问题是:Android 上的 hammer.js 是否存在已知问题,或者已知的解决方法?我真的不希望有条件地使用基于平台的两种不同方法,尤其是当存在我没有想出的方法来测试所有可能的移动平台。
hammer.js tap代码示例;没有什么非常有趣的事情发生:
$(".menuitem").each( function(i, elem) {
var mc = new Hammer.Manager(elem);
mc.add(new Hammer.Tap());
mc.on("tap", action);
});
此外,还有一个覆盖整个页面的顶级滑动识别器:
var swipelistener = new Hammer($("body")[0], {
recognizers: [[Hammer.Swipe,{ direction: Hammer.DIRECTION_RIGHT }]]
});
swipelistener.on("swipe", swipeRight );
响应点击事件的元素总共不到两打,并且没有重叠或嵌套的元素。我认为这可能与滑动识别器重叠点击识别器有关,但移除滑动监听器根本不会改变点击行为。
最佳答案
您需要使用每个识别器的设置。
hammertime.get('swipe').set({
direction: hammer.DIRECTION_ALL, threshold: 1, velocity: 0.1
});
这对我在 4.1.1 上滑动很有效 如果有人可以为 tap 编写一些示例代码,那将非常有帮助,因为我仍在摆弄它。
此外,您不需要 mc.add,因为默认情况下管理器具有所有识别器。手动删除(使用 mc.remove)一个后,您只需使用 .add。
如果您不确定任何识别器的设置,请查看他们的网站,例如 http://hammerjs.github.io/recognizer-swipe/表明我可以按照上面的代码设置方向、阈值和速度等。
关于android - Hammer.js 水龙头在 Android 上很慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33360602/