我是这个网站和iOS编程的新手。
我正在制作一个打击乐器应用程序。为此,我想知道触摸屏幕的每个手指的x和y位置。我认为这很简单,但多点触控让我感到困惑。
假设用户在屏幕上按下两个手指并且用户在屏幕上按下第三个手指。如何确定第三根手指的位置?
我的感觉是我需要实现touchesBegan
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
要确定x和y位置,我必须查看触发此touchesBegan调用的触摸。但接触是以无序的方式呈现的。如果第三个手指触发了这个touchesBegan,那么我在NSSet中有三个触摸。但由于该集合是无序的,我如何确定触发第三次调用touchesBegan的触摸?如果我正确理解我的文档,它可能是这三个接触中的任何一个。
非常感谢提前
答案 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
// ...
}
}