我有两个UIImageView
:image1
和image2
。 image1
重叠image2
我还有UITapGestureRecognizer
:
UITapGestureRecognizer *tapImage1 = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTouch:)];
UITapGestureRecognizer *tapImage2 = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTouch:)];
[tapImage1 setNumberOfTapsRequired:1];
[self.image1 addGestureRecognizer:tapImage1];
[tapImage2 setNumberOfTapsRequired:1];
[self.image2 addGestureRecognizer:tapImage2];
点击image1
后,在handleTouch
中,我想检查一些条件并将点击事件传递给基础image2
。
将来会有更多图像,而不仅仅是2。
编辑:从答案中复制的进一步说明:
我在image1
中有三角形。在handleTouch
我想检查点击是否在三角形内。如果tap在三角形之外,那么我想检查也有三角形的基础image2
。如果tap位于image2
的三角形内,则将image2
置于前面,如果不是,则继续使用其他底层图像(如果有)。
答案 0 :(得分:0)
出于多种原因,模拟用户交互通常不是一个好主意。最好关注你想要实现的目标。你想要image2突出显示,选择,执行一点舞蹈,还是其他什么?然后继承UIImageView的子类并实现一个精确执行所需操作的方法,并让handleTouch:调用该方法。
答案 1 :(得分:0)
您可以继承UIImageView或UIView并覆盖hitTest:withEvent: 请查看示例:
-(UIView*) hitTest:(CGPoint)point withEvent:(UIEvent *)event {
if ([self _checkCriteria]) {
return _target;
} else {
return [super hitTest:point withEvent:event];
}
}