如何确定多点触控场景中最后一次触摸的x& y?

时间:2011-11-22 12:10:40

标签: iphone ios touch multi-touch

我是这个网站和iOS编程的新手。

我正在制作一个打击乐器应用程序。为此,我想知道触摸屏幕的每个手指的x和y位置。我认为这很简单,但多点触控让我感到困惑。

假设用户在屏幕上按下两个手指并且用户在屏幕上按下第三个手指。如何确定第三根手指的位置?

我的感觉是我需要实现touchesBegan

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

要确定x和y位置,我必须查看触发此touchesBegan调用的触摸。但接触是以无序的方式呈现的。如果第三个手指触发了这个touchesBegan,那么我在NSSet中有三个触摸。但由于该集合是无序的,我如何确定触发第三次调用touchesBegan的触摸?如果我正确理解我的文档,它可能是这三个接触中的任何一个。

非常感谢提前

2 个答案:

答案 0 :(得分:0)

也许您可以添加一个简单的计数器属性,并在touchesBegan中增加其值,并在touchesEnd中减少。

答案 1 :(得分:0)

好的,现在看来我错误地解释了我的测试数据。如果当第三根手指触摸设备时两根手指已经触摸了设备,则在调用touchesBegan时只有一个UITouch对象是NSSet的一部分,而不是我似乎遇到的三个。这个UITouch代表了最后一个指尖。

将多个UITouch对象传递给touchesBegan的唯一时间实际上是多个手指同时开始触摸设备。

因为在我的情况下,我需要根据它们的位置处理所有新的触摸,我需要处理NSSet中的所有UITouch对象。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    for ( UITouch *touch in touches)
    {
        CGPoint location = [touch locationInView:self.view];
        // Handle finger touch at given location
        // ...
    }
}