UITableView不接受传递触摸

时间:2010-02-20 16:46:56

标签: iphone objective-c cocoa-touch uikit touch

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

1 个答案:

答案 0 :(得分:1)

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

然而,最可能的罪魁祸首是滚动视图。 Scrollviews会在将所有内容发送到子视图之前捕获所有内容。这是通常的设置。

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

为了对此进行测试,我建议将你的UIView“放在”上,即将其作为普通视图的子视图,并让响应者链按照你的意愿工作。然后将底部/超级视图换成UITableView,看看它是否仍然有效。

如果没有,问题是表格嵌入的scrollview。我不知道如何解决这个问题。