我有两个自定义UIView(分别为A和B),每个都有一个设置为相同原点和相同大小的框架。它们都作为子视图添加到父UIView(C)中。
我有一个触摸识别器作为A和B的一部分,可以监听某些地方的触摸。如果收到该触摸,它会将一个代表提升到父母UIView,说它已被触摸。问题在于,由于B在A之后添加,因此B从未接收到触摸事件。
A和B UIViews是带有端点的单行。他们都识别端点上的触摸并提出代理通知。如何在顶部使用父视图添加子视图并识别它们的触摸?这就像一个独特的东西。
答案 0 :(得分: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是您需要执行的任何测试,以确定该点是否位于视图中的活动区域。
答案 1 :(得分:0)
在手势识别器中将cancelsTouchesInView
设置为NO。