iOS - 如何将触摸转移到底层uiview

时间:2013-02-01 20:36:25

标签: ios uiview touch touch-event

我有3个相同大小的UIView堆叠在一起。最上面是透明的,仅用于检测触摸。检测到的触摸类型将确定我想要接收触摸事件的其他两个底层视图中的哪一个。通过触摸完成最顶层视图后,我需要将触摸事件转发到正确的底层视图。我怎么能这样做?

编辑 - 我正在添加我的触摸检测代码。这是在MainViewController中,其视图包含所有3个子视图。

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{

    for (UITouch *touch in touches)
    {
        if (touch.view == self.touchOverlay) {
            CGPoint touchLocation = [touch locationInView:touch.view];

            //do a bunch of math to determine which view should get the touches.
            if (viewAshouldGetTouches) //forward to viewA
            if (viewBshouldGetTouches) //forward to viewB


        }
    }
}

2 个答案:

答案 0 :(得分:3)

制作两个子视图setUserInteractionEnabled:NO并处理父级中的所有触摸。然后,根据触摸类型,发送正确的视图编程触摸事件。那么你不需要在顶部清晰的视图。基本上,您将从下往上协调触摸事件,而不是顶部 - >底部 - >中间。

答案 1 :(得分:1)

您必须通过为顶视图创建UIView子类并覆盖以下方法来执行此操作:

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {
    // UIView will be "transparent" for touch events if we return NO
    return (point.y < MIDDLE_Y1 || point.y > MIDDLE_Y2);
}