If you need to know which finger actually were lifted from screen when doing a multiple touch tracking, you need to check the phase variable from UITouch to see if it has been actually lifted from screen. If the single touch has ended, it’s phase will be UITouchPhaseEnded
Normally when you lift one finger, the touchesEnded is called with a set of all active touches. I wish it would be a set of only touches that have ended.
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
NSSet *allTouches = [event allTouches];
for (int zz=0;zz<[allTouches count];zz++)
UITouch *touch = [[allTouches allObjects] objectAtIndex:zz];
CGPoint touchPos = [touch locationInView:self];