捕获并停止用户交互iOS UITableViewCell的传播

捕获并停止用户交互iOS UITableViewCell的传播,ios,uitableview,opengl-es-2.0,user-interaction,Ios,Uitableview,Opengl Es 2.0,User Interaction,我正在做一些自定义绘制一个UITableViewCell,我已经子类化了。其中有一个OpenGL ES 2.0控件,需要用户交互才能工作。。。现在,如果我开始水平拖动,控件会响应,但只要我沿垂直方向拖动,它就会开始移动表视图的视口。如何阻止此交互转到UITableView,并将其限制到UITableView单元格中我自己的UIView?我认为您无法阻止用户在UITableView上的交互,因为它会影响所有子视图。 我将尝试将UITableView交互发送到您希望它使用的方法 - (void)sc

我正在做一些自定义绘制一个UITableViewCell,我已经子类化了。其中有一个OpenGL ES 2.0控件,需要用户交互才能工作。。。现在,如果我开始水平拖动,控件会响应,但只要我沿垂直方向拖动,它就会开始移动表视图的视口。如何阻止此交互转到UITableView,并将其限制到UITableView单元格中我自己的UIView?

我认为您无法阻止用户在UITableView上的交互,因为它会影响所有子视图。
我将尝试将UITableView交互发送到您希望它使用的方法

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
   [MyClass myScrollDidStartMethod]; 
}

或者使用-(void)scrollViewDidScroll:(UIScrollView*)sender,这样您就可以处理发件人的contentOffset以获得滚动方向(有关详细信息,请参阅)

您可以尝试将UITableView子类化并覆盖以下方法

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {  
    UITouch *touch = [touches anyObject];

    // if user tapped on your custom view, disable scroll        
        self.scrollEnabled = NO;
    // end if

    [super touchesBegan:touches withEvent:event];
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    self.scrollEnabled = YES;
    [super touchesEnded:touches withEvent:event];
}

- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {
    self.scrollEnabled = YES;   
    [super touchesCancelled:touches withEvent:event];
}

谢谢不需要子类化。