我希望有人能够帮助我解决一个让我头痛的问题!
给定以下视图层次结构:
我想能够检测自定义UITableViewCell上的滑动手势。
我已经子类化了UIScrollView,并有一个hitTest:withEvent:方法来检查我是否正在触摸tableview单元格(或其内容),如果是,则设置以下滚动视图属性:
- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
UIView* result = [super hitTest:point withEvent:event];
if ([result.superview isKindOfClass:[UITableViewCell class]] || [result.superview tag] == SUBVIEW_TAG)
{
self.canCancelContentTouches = NO;
self.delaysContentTouches = YES;
} else {
self.canCancelContentTouches = YES;
self.delaysContentTouches = NO;
}
return result;
}
我也实现了:
- (BOOL)touchesShouldCancelInContentView:(UIView *)view
{
if (view.tag == SUBVIEW_TAG || [[view superview] isKindOfClass:[UITableViewCell class]])
return NO;
return YES;
}
如果被触摸的视图是表格视图单元格,我将返回NO。
这些方法都按预期调用并执行其操作,但我仍然无法阻止UIScrollView "独占"滑动手势。
有趣的是,如果我在上面两个方法中都包含包含表格视图和单元格的UIView(使用SUBVIEW_TAG的那个方法),它就可以正常运行,所以我猜测这一定与UITableView继承自UIScrollView有关。
我的主要目标是能够在单元格上滑动以显示更多单元格选项。 在该视图的任何其他位置水平滑动都将被滚动视图捕获,并根据其正常行为在水平方向上移动内容。
任何想法将非常感谢!
谢谢!Rog