Here is the code I’m using:
-(void)viewDidLoad
{
NSString *checkerPath = [[NSBundle mainBundle] pathForResource:@"black-yellow-checker" ofType:@"png"];
UIImage *checkerImage = [[UIImage alloc] initWithContentsOfFile:checkerPath];
checkerView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0f, 230.0f, 320.0f, 280.0f)];
[checkerView setImage:checkerImage];
UIButton *backButton = [[UIButton buttonWithType:UIButtonTypeCustom] retain];
backButton.frame = CGRectMake(45.0f, 175.0f, 230.0f, 50.0f);
[backButton setBackgroundImage:[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"yellowButton" ofType:@"png"]] forState:UIControlStateNormal];
[backButton addTarget:self action:@selector(goBackHome:) forControlEvents:UIControlEventTouchDown];
[backButton setTitle:@"Back" forState:UIControlStateNormal];
backButton.titleLabel.font = [UIFont fontWithName:@"Marker Felt" size:30];
backButton.titleLabel.textColor = [UIColor blackColor];
[checkerView addSubview:backButton];
}
- (void)goBackHome:(id)sender
{
NSLog(@"go back pressed");
}
Not sure why this doesn’t work. The button shows up, but when I press it nothing happens. It doesn’t even change to the “indented” image when I touch it. Nothing. Can’t use IB, has to be programmatically. Any thoughts?
UIImageView has
userInteractionEnabledset to NO by default. This prevents any subviews from getting touches.You could either enable user interaction of the image view by
or create a new UIView to include both
checkerViewand thebackButton.