Ios iPhone/iPad标识哪个touchBegin,哪个touchEnd

Ios iPhone/iPad标识哪个touchBegin,哪个touchEnd,ios,multi-touch,Ios,Multi Touch,我正在尝试构建具有多点触控功能的简单应用程序。我是iOS和Objective/cocoa的新手。所以,若这个问题如此愚蠢,请道歉 我想知道现在有多少个手指处于活动状态,以及在用户释放某些手指或所有手指后,哪些手指被释放。我要注意,我需要知道到底是哪个手指被松开了。乍一看一切似乎都很简单。。。但在练习中我遇到了一个问题( 假设我同时在屏幕上放了3根手指,然后过了一段时间我放了第四根手指。在这个例子中,我的UIView.m文件被称为两个“touchesbreated”evens。 在第一个事件中,我

我正在尝试构建具有多点触控功能的简单应用程序。我是iOS和Objective/cocoa的新手。所以,若这个问题如此愚蠢,请道歉

我想知道现在有多少个手指处于活动状态,以及在用户释放某些手指或所有手指后,哪些手指被释放。我要注意,我需要知道到底是哪个手指被松开了。乍一看一切似乎都很简单。。。但在练习中我遇到了一个问题(

假设我同时在屏幕上放了3根手指,然后过了一段时间我放了第四根手指。在这个例子中,我的UIView.m文件被称为两个“touchesbreated”evens。 在第一个事件中,我得到了触摸次数=3',在第二个事件中,触摸次数将为=4'(这是正确的,因为这是一个总计数器)。因此,在这个事件中,似乎一切都很清楚

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    NSSet *allTouches = [event allTouches];
    NSArray *allObjects=[allTouches allObjects];
    touchCount = [NSNumber numberWithInt:[allObjects count]]; // this is my main counter of current active touches.
    NSLog(@"%d", touchCount.intValue);
}
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    //what I should do ????
}
让我们把屏幕分成4部分。想象一下iPad屏幕上有4个矩形

让我们为这个矩形创建四个4布尔变量。我们将存储所有4个矩形的状态。默认情况下,所有变量将为-false

bool rectangle1 = false;
bool rectangle2 = false;
bool rectangle3 = false;
bool rectangle4 = false;
然后,当手指开始向下时,在“touchesbeated”事件中,我们更改布尔变量。我们应该更改哪个变量,我通过x-y坐标知道。假设我将手指放在矩形2上,然后我将另一个手指放在矩形4上。在这种情况下,变量如下所示:

bool rectangle1 = false;
bool rectangle2 = true;
bool rectangle3 = false;
bool rectangle4 = true;

在此之后,我将从矩形#4中释放一个手指。因此,我将如何在“touchesEnded”事件中知道这是从一开始就在矩形#4区域中释放的手指?

与其编写自定义代码,我强烈建议使用以下类:,有具体的实现来实现你想要。

手势识别器绝对是正确的方法。我会更进一步,让每个矩形都有自己的手势识别器,或者至少有自己的触摸开始和触摸结束实现


如果矩形之间需要更多的协调,那么这应该是视图控制器的工作。矩形可以根据需要通知视图控制器。

UITouch
有两种方法来确定触摸的当前和以前位置:
locationInView:
previousLocationInView:
。这些方法提供跨调用
touchsmoved:withEvent:
建立触摸“身份”的唯一可靠方法。通过跟踪
locationInView:
返回的值,并在后续调用中将其与
previousLocationInView:
返回的值进行比较,可以明确地确定“哪个”触摸你的眼睛


您没有提供足够的信息来确定是否可以使用
UIGestureRecognizer
s来完成您正在尝试的操作,但是如果可以,您可能会发现使用它们会更容易。

谢谢,我正在尝试创建piano roll。