我在UITableView上有一个UIView的子类.我正在使用UITableView来显示一些数据,同时,我想覆盖手指后面的动画(例如,留下一条线索).
如果我做对了,我需要通过UIView子类和UITableView来处理触摸事件.我怎样才能做到这一点?
是否有可能在UIView子类上触发touchesMoved,然后在UITableView上触发?
非常感谢你的帮助.
解决方法
我解决这个问题的方式是不是那么干净,但它有效.如果有更好的方法,请告诉我.
我已经为我的自定义UIView覆盖了hitTest,以便它将触摸指向下面的UITableView.然后在UITableView中我通过touchesBegan,touchesMoved等处理手势.我在UIView上也调用了touchesBegan.
这样,触摸由两个视图处理.
之所以我没有反过来(让UIView的touchesBegan调用UITableView的touchesBegan)是因为UITableView上的手势识别器不起作用.
UIView子类’hitTest
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { // tview is the UITableView subclass instance CGPoint tViewHit = [tView convertPoint:point fromView:self]; if ([tView pointInside:tViewHit withEvent:event]) return tView; return [super hitTest:point withEvent:event]; }
UITableView子类的touchesBegan
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [touches anyObject]; CGPoint location = [touch locationInView:touch.view]; // .... // view is the UIView's subclass instance [view touchesBegan:touches withEvent:event]; }