【发布时间】:2010-07-20 23:35:31
【问题描述】:
我正在使用自定义 UIGestureRecognizer 子类来跟踪我的 InfoView 类上的手势。 InfoView 类是称为InfoCell 的自定义UITableViewCell 子类的子视图。
我已将手势识别器添加到我的根视图(屏幕上其他所有内容的父视图,因为我的自定义手势识别器的目的是允许在表格之间拖动 InfoCell 视图)。现在,除了一件事,一切都按原样进行。我在UIGestureRecognizer 子类中使用以下代码来检测InfoView 视图上的触摸:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UIView *touchView = [[touches anyObject] view];
if ([touchView isKindOfClass:[InfoView class]]) {
// Do stuff
}
这里的问题是InfoView 对象上的触摸被拦截,因此它们没有被转发到包含InfoCell 的UITableView,这是InfoView 的父视图。这意味着我不能再通过拖动InfoView 视图来滚动表格视图,这是一个问题,因为InfoView 覆盖了整个InfoCell。
有什么方法可以将触摸转发到表格视图上以便它可以滚动?我已经尝试了很多东西:
[super touchesBegan:touches withEvent:event];
[touchView.superview.superview touchesBegan:touches withEvent:event];(touchView.superview.superview 获得对其父级 UITableView 的引用)
但到目前为止没有任何效果。另外,我的UIGestureRecognizer 的cancelsTouchesInView 属性设置为NO,因此不会干扰触摸。
感谢您的帮助。谢谢!
【问题讨论】:
标签: cocoa-touch uiview ipad uigesturerecognizer