我希望有人能够帮助我解决目前正在做我的头的问题!在UIScrollView里面检测UITableViewCell上的滑动手势
给出下面的视图层次
我希望能够检测我的自定义的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继承。
我的主要目标是能够在单元上滑动以显示更多细胞选项。在该视图的任何其他位置的水平滑动将被滚动视图捕获,并按照其正常行为水平移动内容。
任何想法将非常感激!
谢谢! 罗格
是否不足以将手势识别器添加到UITableViewCell? – teriiehina
你有没有解决这个问题? 如果是这样,你介意分享你的解决方案吗?你已经很好地详细描述了问题 - 以类似的方式回答会非常棒! – iOSProgrammingIsFun
是的,这是一个很棒的解决方案 – Pasta