UITableView取消动作
问题描述:
我想用UITableView的行为像userInteractionEnabled == NO(表应该停止被用户移动)。但我希望能够激活它在用户移动的UITableViewUITableView取消动作
如果我只设置
[self.tableView setUserInteractionEnabled:NO];
用户停止接触后,这种行为将被激活。
有关我如何完成它的任何想法?
答
我发现了如何做到这一点,我不能相信我错过此属性:
[myTableView setScrollEnabled:NO];
答
您可以继承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;
}
}
只是一个警告:重写一个UIScrollView的事件处理可能充满了危险,如果你”在事件周期中不会100%舒适地发生。 – 2010-08-07 18:12:38
我已经知道在哪里停止触摸处理。问题是将userInteractionEnablet设置为NO不会导致触摸停止处理。 – Daniel 2010-08-09 07:36:08