2

我正在尝试将自定义 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。任何想法为什么这不起作用?

4

1 回答 1

1

如果 UIView 不是 UITableView 的子视图,则它不会将其触及响应者链传递给 UITableView。

然而,最可能的罪魁祸首是滚动视图。滚动视图在将它们发送到子视图之前捕获所有触摸。这与通常的设置相反。

由于 UITableView 使用滚动视图,因此滚动视图可能会在触摸到达 UIView 本身之前捕获它们。

为了测试这一点,我建议把你的 UIView “over”,即让它成为一个普通视图的子视图,并让响应者链像你希望的那样工作。然后将底部/超级视图换成 UITableView 并查看它是否仍然有效。

如果没有,问题是表格嵌入的滚动视图。我不知道解决这个问题。

于 2010-02-20T17:41:10.740 回答