我希望有人能够帮助我解决目前正在解决的问题!
给出以下视图层次结构
我希望能够在我的自定义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“占用”滑动手势。
有趣的是,如果我在上面的两个方法(带有SUBVIEW_TAG的方法)中包含包含tableview和cell的UIView,它的工作方式非常完美,所以我猜它必须与UITableView继承的事实有关来自UIScrollView。
我的主要目标是能够在细胞上滑动以显示细胞的更多选项。滚动视图将捕获该视图上任何其他位置的水平滑动,并根据其正常行为水平移动内容。
非常感谢任何想法!
谢谢! ROG