以下是我正在使用的代码:
-(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");
}
不确定为什么这不起作用。按钮出现,但是当我按下按钮时没有任何反应。当我触摸它时,它甚至不会改变为“缩进”图像。没有。不能使用IB,必须以编程方式。有什么想法吗?
答案 0 :(得分:6)
UIImageView has userInteractionEnabled
set to NO by default。这可以防止任何子视图被触及。
您可以通过
启用图像视图的用户交互checkerView.userInteractionEnabled = YES;
或创建新的UIView以同时包含checkerView
和backButton
。
UIView* newView = ...
...
[newView addSubview:checkerView];
[newView addSubview:backButton];
答案 1 :(得分:3)
我相信forControlEvents:必须是UIControlEventTouchUpInside。