我想要一个UITableView的行为,例如userInteractionEnabled == NO(该表应该停止被用户移动)。但我希望能够在用户移动UITableView时激活它
如果我只是设置
[self.tableView setUserInteractionEnabled:NO];
用户停止触摸后会激活此行为。
关于如何实现它的任何想法?
答案 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];