如何在Cocoa-Touch中将tap传递给下一个响应者?

时间:2012-01-02 07:59:10

标签: iphone objective-c cocoa-touch

我有两个UIImageViewimage1image2image1重叠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置于前面,如果不是,则继续使用其他底层图像(如果有)。

2 个答案:

答案 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];
    }
}
相关问题