How to check whether a CGPoint is inside a UIImageView?

Posted by Horace Ho on Stack Overflow See other posts from Stack Overflow or by Horace Ho
Published on 2010-06-02T14:47:47Z Indexed on 2010/06/02 15:34 UTC
Read the original article Hit count: 270

Filed under:
|

In touchesBegan:

CGPoint touch_point = [[touches anyObject] locationInView:self.view];

There are tens of UIImageView around, stored in a NSMutableArray images. I'd like to know is there a built-in function to check if a CGPoint (touch_point) is inside one of the images, e.g.:

for (UIImageView *image in images) {
   // how to test if touch_point is tapped on a image?
}

Thanks

Follow up:

For unknown reason, pointInside never returns true. Here is the full code.

    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
    { 
      UITouch *touch = [touches anyObject]; 
        touch_point = [touch locationInView:self.view];
        for (UIImageView *image in piece_images) {
            if ([image pointInside:touch_point withEvent:event]) {
                image.hidden = YES;
            } else {
                image.hidden = NO;
            }
            NSLog(@"image %.0f %.0f touch %.0f %.0f", image.center.x, image.center.y, touch_point.x, touch_point.y);
        }
    } 

although I can the two points are sometimes identical in the NSLog output ...

I also tried:

  if ([image pointInside:touch_point withEvent:nil]) 

the result is the same. never returns a true.

To eliminate the chance of anything goes with with the images. I tried the following:

  if (YES or [image pointInside:touch_point withEvent:event])

all images are hidden ater the first click on screen.

© Stack Overflow or respective owner

Related posts about iphone

Related posts about iphone-sdk