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
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:
hope this helps...
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).
Make sure you check the "User Interactions enabled". This is the easiest solution
Just use a custom UIButton with the image as background image.
Easiest way to add an onClick event to an UIImageView or to a UIView is to add a tap gesture recognizer to it.
You need nothing to do with UIImageView, You can use UIButton with type custom and add touch up inside action to it...set button.imageview setImage: i-e:
If you want to go with UIImageView, then you need to add gestures to your imageview. else you can subclass your UIImageView and then use touch events.
I've seen other answers suggest putting an invisible button underneath the UIImageView, setting the image view to
userInteractionEnabled: NO
, and letting the touches pass through to the button.