最简单的方法来检测捏

这是一个WEB应用程序,不是原生应用程序。 请不要Objective-C NS命令。

所以我需要在iOS上检测'捏'事件。 问题在于我看到的用于做手势或多点触摸事件的每个插件或方法都是(通常)使用jQuery,并且是针对太阳下每个手势的整个附加插件。 我的应用程序非常庞大,我对代码中的死木非常敏感。 我需要的只是检测一个捏,并且使用像jGesture之类的东西只是让我满足简单需求的臃肿方式。

另外,我对如何手动检测夹点有一个有限的了解。 我可以得到两个手指的位置,似乎无法获得混合权利来检测此。 有没有人有一个简单的片段,只是检测捏?


你想使用gesturestartgesturechangegestureend事件。 当任何时候有两个或更多的手指触摸屏幕时会触发这些事件

取决于你需要用捏手势做什么,你的方法将需要调整。 可以检查scale乘数以确定用户的捏手势有多戏剧性。 有关如何使用scale属性的详细信息,请参阅Apple的TouchEvent文档。

node.addEventListener('gestureend', function(e) {
    if (e.scale < 1.0) {
        // User moved fingers closer together
    } else if (e.scale > 1.0) {
        // User moved fingers further apart
    }
}, false);

您还可以拦截gesturechange事件来检测捏合,因为如果您需要它,可以让您的应用更具响应能力。


想想pinch事件是什么:一个元素上的两个手指相互移动或移动。 就我所知,手势事件是一个相当新的标准,因此可能最安全的方法是使用类似这样的触摸事件:

ontouchstart事件)

if (e.touches.length === 2) {
    scaling = true;
    pinchStart(e);
}

ontouchmove事件)

if (scaling) {
    pinchMove(e);
}

ontouchend事件)

if (scaling) {
    pinchEnd(e);
    scaling = false;
}

为了让两个手指之间的距离,使用hypot功能:

var dist = Math.hypot(
    e.touches[0].pageX - e.touches[1].pageX,
    e.touches[0].pageY - e.touches[1].pageY);

Hammer.js一路! 它处理“变换”(捏)。 http://eightmedia.github.com/hammer.js/

但如果你想自己实现它,我认为杰弗里的答案非常稳固。

链接地址: http://www.djcxy.com/p/83319.html

上一篇: Simplest way to detect a pinch

下一篇: Catch browser's "zoom" event in JavaScript