这是一个网络应用程序,而不是本机应用程序。请不要使用Objective-C NS命令。
所以我需要检测iOS上的“夹击”事件。问题是,我看到的每个用于手势或多点触摸事件的插件或方法都是(通常)使用jQuery的,并且是在阳光下的每个手势的完整附加插件。我的应用程序非常庞大,而且我对代码中的死木非常敏感。我所需要的只是检测一下,而使用像jGesture这样的东西只是为了满足我的简单需求而变得臃肿。
此外,我对如何手动检测夹点的理解有限。我可以得到两个手指的位置,但似乎不能正确地混合来检测这个。有没有人有一个简单的代码片段来检测收缩?
发布于 2012-06-25 03:50:51
您想要使用gesturestart
, gesturechange
, and gestureend
events。当两个或更多的手指触摸屏幕时,这些命令就会被触发。
根据您需要如何处理收缩手势,您的方法将需要调整。可以检查scale
乘数以确定用户的挤压手势的戏剧性程度。有关scale
属性的行为方式的详细信息,请参见Apple's TouchEvent documentation。
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
事件来检测它。
发布于 2012-06-25 03:55:15
想一想什么是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);
发布于 2012-06-25 03:57:38
Hammer.js全程支持!它处理“变换”(收缩)。http://eightmedia.github.com/hammer.js/
但如果您希望自己实现它,我认为Jeffrey的答案是相当可靠的。
https://stackoverflow.com/questions/11183174
复制