Search code examples
iphoneuitouchmulti-touch

How do I access only one of my touches in my touches began event


I have:

UITouch *touch = [touches anyObject];

    if ([touches count] == 2) {
        //preforming actions                                                             
    }

What I want to do Is ask it inside of the ifstatement where the two touches are seperatly.


Solution

  • You can iterate over the touches:

    if([touches count] == 2) {
        for(UITouch *aTouch in touches) {
            // Do something with each individual touch (e.g. find its location)
        }
    }

    Edit: if you want to, say, find the distance between the two touches, and you know there are exactly two, you can grab each separately then do some math. Example:

    float distance;
    if([touches count] == 2) {
        // Order touches so they're accessible separately
        NSMutableArray *touchesArray = [[[NSMutableArray alloc] 
                                         initWithCapacity:2] autorelease];
        for(UITouch *aTouch in touches) {
            [touchesArray addObject:aTouch];
        }
        UITouch *firstTouch = [touchesArray objectAtIndex:0];
        UITouch *secondTouch = [touchesArray objectAtIndex:1];
    
        // Do math
        CGPoint firstPoint = [firstTouch locationInView:[firstTouch view]];
        CGPoint secondPoint = [secondTouch locationInView:[secondTouch view]];
        distance = sqrtf((firstPoint.x - secondPoint.x) * 
                         (firstPoint.x - secondPoint.x) + 
                         (firstPoint.y - secondPoint.y) * 
                         (firstPoint.y - secondPoint.y));
    }