UITableView取消移动

时间:2010-08-06 08:27:15

标签: objective-c uitableview

我想要一个UITableView的行为,例如userInteractionEnabled == NO(该表应该停止被用户移动)。但我希望能够在用户移动UITableView时激活它

如果我只是设置

[self.tableView setUserInteractionEnabled:NO];

用户停止触摸后会激活此行为。

关于如何实现它的任何想法?

2 个答案:

答案 0 :(得分:0)

您可以继承UITableView并覆盖touchesEnded:withEvent:。当用户抬起手指时,此方法会被击中。由于您可能不希望在用户点击屏幕时禁用用户交互,因此您可以捕获初始触摸起点和触摸终点。从这两个中,您可以比较Y的增量,以确定在禁用用户交互之前您希望用户移动多少。这里有一些代码可以帮助您。

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

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
  UITouch * touch = [touches anyObject];
  CGPoint touchEndPoint = [touch locationInView:self];
  CGFloat deltaY = touchStartPoint.y - touchEndPoint.y;

  if (fabsf(deltaY) >= kMinimumYMoved) {
      self.userInteractionEnabled = NO;
  }
}

答案 1 :(得分:0)

我发现了怎么做,我不敢相信我错过了这个属性:

[myTableView setScrollEnabled:NO];