怎样才能实现对iPhone捏手势? 我很熟悉使用iPhone上的触摸事件,但我非常懒惰,不想车轮的那样广泛沟道夹手势...源代码或对其将是有益的环节东西重新发明。
Answer 1:
你需要使用一些基本的数学实现它自己。
(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
这些都是你需要在你的应用程序中实现的委托方法。
你需要得到两个触摸之间的距离,然后计算在自己的代码中距离的变化。
你用它来获得距离的数学公式被称为点积
我只是想指出,他们在引用的教程中使用的公式不正确。 我已经更新它包括将在本教程无缘绝对值。
这是点积:
- (CGFloat)distanceBetweenTwoPoints:(CGPoint)fromPoint toPoint:(CGPoint)toPoint
{
float xDist = fromPoint.x - toPoint.x;
float yDist = fromPoint.y - toPoint.y;
float result = sqrt( pow(xDist,2) + pow(yDist,2) );
return result;
}
编辑:我在我以前的答案搞错了....它已经有一段时间,因为我做了任何一种数学的。
如果你不平方根的结果,你不会得到点之间的真实距离。 这就是所谓的计算两个向量之间的大小。
这是做的正确方法。 如果你想省略开方,你不会有两个点之间的精确距离。
如果你不方的答案,你的代码将工作,但它会使用比实际值要大得多测量。 因此,在未来,如果你需要得到两点之间的距离,它会返回类似90000,而不是实际像素距离这将是300像素。
Answer 2:
很肯定这里提出的解决方案已经过时,赞成的iOS 3.2和更高版本使用新的UIPinchGestureRecognizer类的。
Answer 3:
嗯.....看来,有些人是如何利用基本的数学极其混乱。 点积是完全irrelavent,只是混淆的问题。 2个矢量之间的点刺用于计算它们之间的角度。
实际上,你需要使用pythagorus定理。 点是无关点之间的距离的发现 - 只pythagorous!
Answer 4:
如果您正在寻找缩放手势的一个简单的代码示例,我用布洛克在示例应用程序中描述的方法, 我在这里描述 (在页面上的应用程序的第二个到最后和最后的版本)。 捏手势用于缩放几个核心动画层在该例子。
所有他的描述,只要所述距离计算是简单的两点之间施加的勾股定理(与X和Y的距离为直角三角形的两个面)。
文章来源: How to do pinch gestures on the iPhone?