我试图将自定义UIView的触摸传递到下面的UITableView(UIView直接位于UITableView之上)。但是,它似乎没有起作用。
在我的自定义UIView中,我尝试了以下所有内容(我使用touchesMoved作为示例,但我已经为所有4种触摸方法实现了这一点)
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
[self.nextResponder touchesMoved:touches withEvent:event];
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { [super
touchesMoved:touches withEvent:event];
}
我甚至尝试将指向UITableView的指针直接传递到自定义UIView并执行此操作:
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
[self.myTableView touchesMoved:touches withEvent:event];
}
这些选项似乎都没有做任何事情,因为我无法滚动UITableView。任何想法为什么这不起作用?
答案 0 :(得分:1)
如果UIView不是UITableView的子视图,它将不会传递它触及响应者链到UITableView。
然而,最可能的罪魁祸首是滚动视图。 Scrollviews会在将所有内容发送到子视图之前捕获所有内容。这是通常的设置。
由于UITableView使用滚动视图,因此滚动视图可能会在它们到达UIView本身之前捕获触摸。
为了对此进行测试,我建议将你的UIView“放在”上,即将其作为普通视图的子视图,并让响应者链按照你的意愿工作。然后将底部/超级视图换成UITableView,看看它是否仍然有效。
如果没有,问题是表格嵌入的scrollview。我不知道如何解决这个问题。