为什么不使用点击手势识别器?
选项 1
第 1 步:将 tapGestureRecognizer 添加到图像视图
for (UIImageView * v in @[v1, v2, v3, v4]) {
UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handleTap:)];
tap.numberOfTapsRequired = 1;
[self.view addGestureRecognizer:tap];
}
第 2 步:接收点击次数
- (void) handleTap:(UITapGestureRecognizer *)tap {
if (tap.view == v1) {
NSLog(@"V1 was tapped");
}
else if (tap.view == v2) {
NSLog(@"V2 was tapped");
}
else if (tap.view == v3) {
NSLog(@"V3 was tapped");
}
else if (tap.view == v4) {
NSLog(@"V4 was tapped");
}
}
选项 2 - Michael Knudsen 的回答
这是 Michael 建议的替代方法
第 1 步:将 tapGestureRecognizer 添加到图像视图
UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handleTap:)];
tap.numberOfTapsRequired = 1;
[imageViewsParentView addGestureRecognizer:tap];
第 2 步:接收点击次数
- (void) handleTap:(UITapGestureRecognizer *)tap {
CGPoint positionInView = [tap locationInView:tap.view];
if (CGRectContainsPoint(v1.frame, positionInView)) {
NSLog(@"V1 was tapped");
}
else if (CGRectContainsPoint(v2.frame, positionInView)) {
NSLog(@"V2 was tapped");
}
else if (CGRectContainsPoint(v3.frame, positionInView)) {
NSLog(@"V3 was tapped");
}
else if (CGRectContainsPoint(v4.frame, positionInView)) {
NSLog(@"V4 was tapped");
}
}