怎么办捏在iPhone的手势?(How to do pinch gestures on the iP

2019-07-30 00:28发布

怎样才能实现对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?