我有一个带有DrawingView作为子视图的自定义UITableViewCell。如果用户每次将触摸事件转发到基础ScrollView(UITableView)并且视图滚动时尝试在该视图上绘制某些内容。如何禁用从touch / scroll-events到scrollView的转发,用户可以在DrawingView上绘制?
任何想法?我测试了exclusiveTouch属性,像hitTest或touchBegan这样的方法来捕获事件并停止滚动,但没有任何帮助。谢谢你的帮助!
答案 0 :(得分:0)
这里需要注意的是,“绘图”动作很容易被解释为滚动动作。
您需要做的是在您的单元格上覆盖pointInside。
有效:
- (BOOL)pointInside:(CGPoint)point
withEvent:(UIEvent *)event
{
if (CGRectContainsPoint(drawingView.frame, point)) {
// Use the point to do the drawing
[drawingView drawAtPoint:point];
// Disable scrolling for good measure
self.tableView.scrollView.scrollEnabled = NO;
return NO;
}
// Enable scrolling
self.tableView.scrollView.scrollEnabled = YES;
return [super pointInside:point withEvent:event];
}
这意味着只要用户触摸drawingView中的单元格,就不会滚动。
如果你想在drawingView中同时滚动和绘制,那么这将是一个很大的问题。
看看这是否有效。你可能不得不做一些额外的工作,比如将点转发到你的drawingView来绘制一些东西。
请注意,即使您的手指触摸同一点,也可以多次调用pointInside方法,以便处理被调用的重复事件。