覆盖的UIControl或UIView如何知道在其上方结束的触摸事件?

时间:2009-08-21 13:21:18

标签: iphone cocoa-touch uikit uicontrol

我有一个UIControl(或UIView,无关紧要),这是由另一个UIControl覆盖的。另一个UIControl对触摸事件做出了很好的反应。但是,底层的UIControl还需要知道触摸,以及它是否实际上是“在它上面”或者不是从用户的角度来看。覆盖UIControl部分透明。

如何才能触及底层UIControl?

1 个答案:

答案 0 :(得分:1)

我认为有几种方法可以解决这个问题......

你可以将触摸事件传递给另一个控件...虽然我不认为如果你将上部视图移动到另一个视图上它会工作吗?你可能需要进行实验。

更简单的方法可能只是查看下方的矩形是否包含触点:

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent*)event {
    UITouch *touch = [[event allTouches] anyObject];
    CGPoint touchLocation = [touch locationInView:self];
    if (CGRectContainsPoint(lowerView.frame, touchLocation)) {
        <doyourthing>
}

我不记得了,但你可能需要转换两个视图之间的视图坐标?!?或者您可以通过 - (BOOL)pointInside:(CGPoint)指向withEvent:(UIEvent *)事件来询问视图本身