UITableView从子视图中获取触摸事件

3

我有一个UITableView,在其单元格中加载UIView。这些UIView使用-touchesBegan:withEvent:等方法,所有这些方法都可以正常工作,并让我实现代码来移动表中的这些子视图。这一切都很好,直到我垂直移动手指并开始滚动表格,然后UIView停止接收任何触摸事件。如果有人知道如何解决这个问题,我会非常高兴!非常感谢。

3个回答

3
-(void)ViewDidLoad
{
    UITapGestureRecognizer *tapped = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapped)];
    tapped.numberOfTapsRequired = 2;
    [self.view addGestureRecognizer:tapped];   
    [tapped release];
}

-(void)tapped
{
    NSLog(@"TAPPED");
}

1

你的UITableView的父级UIScrollView可能会接管响应你的触摸事件。

只需将事件转发到你的自定义子视图即可。

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    if ([touches count] == 1) 
    { 
        //Your code here than should return if it reacts to touch

    }
    //forwarding action: 
    [self.nextResponder touchesBegan:touches withEvent:event];
}

来源: 如何在uitableview上进行触摸转发?


谢谢您的回复,但是我仍然无法阻止表格在我垂直移动手指时捕获触摸事件(即,它会滚动表格而不将事件发送到我的子视图)。我会继续研究并在找到解决方法后再发布。 - SomaMan

0

虽然是老话题,但我也曾遇到同样的问题(将UITableView作为另一个UITableView的子视图)。只需将“父”UITableView的scrollEnabled属性设置为NO即可禁用其滚动。这将停止垂直滚动。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接