0

我在 tableview 上创建了一个视差视图,将一个水平滚动视图放在 headerTableView 后面。

我设置tableView.backgroundColor = [UIColor clearColor];

然后tableView.headerTableView.backgroundColor = [UIColor clearColor];

并像这样设置我的滚动视图:

[self.view insertSubview:scrollView belowSubview:tableview];

视差效果完美,但我的问题是用户无法与水平滚动视图交互,因为它位于 tableView 后面;

我试图把它,tableView.headerTableView.userInteractionEnabled = NO;但它不起作用。

如果我想与 scrollView 交互,我需要设置,tableView.userInteractionEnabled = NO;但我不能再与 tableView 交互。

是否有一种巧妙的方法可以与 scrollView 和 tableView 交互并保持视差效果?

4

2 回答 2

2

如果您想“通过”视图传递触摸,您可以覆盖视图上的 hitTest 并将命中传递给另一个视图。

就我而言,我有一个非常窄的滚动视图,将它放入一个更大的容器中并将其设置为一个属性(touchReceivingView)。在容器上,我使用以下代码将 hitTest 传递给另一个视图:

- (UIView *) hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    if ([self pointInside:point withEvent:event]) {
        return touchReceivingView;
    }
    return nil;
}
于 2013-09-03T13:52:26.240 回答
0

您是否尝试过禁用水平滚动视图的 userInteraction 并实现UISwipeGestureRecognizer捕捉用户的滑动?之后,您可以根据识别器触发的事件以编程方式“移动”水平滚动视图

于 2013-09-03T13:35:34.660 回答