在UIScrollView内检测UITableViewCell上的滑动手势

时间:2011-09-28 09:11:09

标签: uitableview uiscrollview uigesturerecognizer

我希望有人能够帮助我解决目前正在解决的问题!

给出以下视图层次结构

enter image description here

我希望能够在我的自定义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

0 个答案:

没有答案