我目前正在使用此代码获取所有触摸的位置:
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进行测试),它与单点触控完美配合。但是当尝试多次触摸时,第一次迭代是正确的,而第二次迭代没有给出正确的位置。
即。 第一次触摸:(536,163)正确 第二次触摸:(198,608)但应该在某处(148,345)
我觉得我应该用[touch locationInView:[touch view]]改变一些东西;给出正确的位置,但我不知道该改变什么。 任何帮助表示赞赏。
答案 0 :(得分:3)
很难从一组坐标中理解这个问题而没有看到你的观点,任何子视图以及你在哪里接触,但你应该知道:
[touch locationInView:aView]
给出aView
坐标系中触摸的坐标。也就是说,您看到的坐标相对于aView
的左上角,这可能不是您所期望的。试试[touch locationInView:self]
,这是更常见的。
查看iOS事件处理指南的“事件和触摸”部分。如果您尝试跟踪多个触摸,通常不需要迭代该集合。 iOS处理所有这些。您可以使用属性tapCount
和phase
来获取有关触摸是否已移动,手指数量下降等信息。
有没有帮助?