Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

touches event handler for UIImageView

I am just getting stated with iPhone development and can't seem to find the answer I am looking for what I want to do.

It seems like I should be able to programmatically create a UIImageView and then set up an event handler for it's touch functions.

in c# i would have something that looks like

Button b = new Button(); b.Click+= my handler code

right now I have this

CGRect myImageRect = CGRectMake(0.0f, 0.0f, 141.0f, 151.0f);
UIImageView *myImage = [[UIImageView alloc] initWithFrame:myImageRect];

myImage.userInteractionEnabled = YES;
[myImage setImage:[UIImage imageNamed:@"myImage.png"]];
myImage.opaque = YES; // explicitly opaque for performance
[self.view addSubview:myImage];
[myImage release];

What do I need to do to override the touch events?

thanks

like image 805
madmik3 Avatar asked Mar 11 '10 17:03

madmik3


2 Answers

While it is not the complete answer to your question, i think the following solution might be better then doing the "invisible-button-workaround".. simply subclass from UIImageView and override the following method:

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{

 //your UIImageView has been touched :)

 //event -> "A UIEvent object representing the event to which the touches belong."

 //touches -> "A set of UITouch instances in the event represented by event that    represent the touches in the UITouchPhaseEnded phase."

}

hope this helps...

like image 150
samsam Avatar answered Sep 29 '22 03:09

samsam


I have a mainview with some icons like "about" to open an about view. In the corresponding controller (mainview) I added an event handler for touchesBegan. Moreover I need to check which view has been "touched", as there are more icons on the view. My UIImageView instance is "aboutImg" and user interaction needs to be checked (i.e. UI builder -> attributes inspector of view).

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];
    if ([touch view] == aboutImg){
        [self ShowAbout];
    }
}

Make sure you check the "User Interactions enabled". This is the easiest solution

like image 41
Michael Biermann Avatar answered Sep 29 '22 03:09

Michael Biermann