我已经在我的uiview层次结构中放置了一个UIGestureRecognizer但它没有被触发。以下是观点的一般地图:
UIScrollView> UIView> UIView> UIView>的的UIView
最后一个视图有手势识别器:
- (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
self.userInteractionEnabled = TRUE;
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)];
[self addGestureRecognizer:tap];
[tap release];
}
return self;
}
- (void)tap:(UIGestureRecognizer *)recognizer {
NSLog(@"tap");
}
我正在设置scrollview的canCancelContentTouches
以允许手势传播。
当我将带有手势的视图移动到滚动视图的正下方时,它可以正常工作。有人可以解释为什么它在深层次结构中不起作用吗?
谢谢!
答案 0 :(得分:0)
在此类层次结构中,您触摸的点必须位于视图框架和所有父框架内。响应者链从滚动视图开始,如果触摸在滚动视图之外,则它停在那里。然后它会检查scrollview的直接子节点,依此类推。
如果不是这种情况,我建议编写自己的hittest函数来检查最后一帧是否被击中然后返回。