2011-12-16 125 views
1

我目前使用此代码来获取所有触摸的位置错误的位置:触摸开始与多点触摸让

NSSet *allTouches = [event allTouches]; 
NSArray *allObjects=[allTouches allObjects]; 
for (int i=0;i<[allObjects count];i++) 
{ 
    UITouch *touch = [allObjects objectAtIndex:i]; 
    CGPoint location = [touch locationInView: [touch view]]; 

    //Add to array.... 
} 

虽然在模拟器上测试它(没有一台iPad,现在对其进行测试),它与单点触控完美配合。但是当尝试多次触摸时,第一次迭代是正确的,而第二次迭代没有给出正确的位置。

即 第一触摸:(536163)正确 二摸:(198608),但应在什么地方(148345)

我有,我应该改变的东西有一种感觉[触摸locationInView:触摸视图] ]。给出正确的位置,但我不知道要改变什么。 任何帮助表示赞赏。

回答

3

这是很难理解的一组坐标的问题,没有看到你的观点,任何子视图,并在那里你在接触,但你应该知道:

  1. [touch locationInView:aView]给出的坐标触摸坐标系aView。也就是说,你看到的坐标相对于aView的左上角,这可能不是你所期望的。尝试[touch locationInView:self],这是比较常见的。

  2. 查看iOS事件处理指南中的“Events and Touches”部分。如果您试图追踪多个触摸,您通常不需要遍历该集合。 iOS为你处理所有这些。您可以使用属性tapCountphase来获取有关触摸是否移动,手指有多少的信息等等。

有帮助吗?

+0

非常感谢。第一点是原因。 '自我'解决了这个问题 – Sami 2011-12-17 00:56:06