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

时间:2011-05-18 08:07:08

标签: objective-c events uitableview touch subview

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

3 个答案:

答案 0 :(得分: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 :(得分:1)

UITableView的父UIScrollView可能会接管您的触摸事件。

forward事件发送到自定义子视图。

-(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];
}

来源:Touch forwarding on uitableview?

答案 2 :(得分:0)

旧主题,但我正在努力解决同样的问题(UITableView作为UITableView的子视图)。只需使用scrollEnabled = NO禁用“父”UITableView的滚动。这将停止垂直滚动。