1

我有两个自定义 UIView(分别为 A 和 B),每个都有一个设置为相同原点和相同大小的框架。它们都作为子视图添加到父 UIView (C)。

作为 A 和 B 的一部分,我有一个触摸识别器,用于监听某些位置的触摸。如果收到该触摸,它会向父 UIView 提出一个委托,说明它已被触摸。问题在于,由于 B 是在 A 之后添加的,因此 B 永远不会收到触摸事件。

A 和 B UIViews 是带有端点的单行。他们都识别端点上的触摸并提出委托通知。如何添加子视图并识别对它们的触摸以及顶部的父视图?这就像一个排他性的东西。

4

2 回答 2

1

如果 A 正在接收触摸事件而 B 不是,尽管它们都是 C 的孩子,那么这是因为 A 正在为自己声明所有触摸事件,包括那些为 B 准备的触摸事件。

解决方案是覆盖 A 上的 pointInside:withEvent: 方法,以确定它是否应该为自己接受事件,如下所示:

-(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {
    if ([self pointIsInHotspot:point]) return YES;
    return NO;
}

其中 pointIsInHotspot 是您需要执行的任何测试,以确定该点是否位于视图内的活动区域上。

于 2013-04-12T21:22:45.267 回答
0

cancelsTouchesInView在手势识别器中设置为 NO。

于 2013-04-12T22:39:49.890 回答