我在tableview上创建了一个视差视图,在headerTableView后面放置了一个水平滚动视图。
我设置tableView.backgroundColor = [UIColor clearColor];
然后是tableView.headerTableView.backgroundColor = [UIColor clearColor];
并设置我的scrollView:
[self.view insertSubview:scrollView belowSubview:tableview];
视差效果完美但我的问题是用户无法与水平滚动视图交互,因为它位于tableView后面;
我试图放tableView.headerTableView.userInteractionEnabled = NO;
,但它不起作用。
如果我想与scrollView进行交互,我需要设置tableView.userInteractionEnabled = NO;
,但我不能再与tableView交互了。
是否有一种棘手的方法可以与scrollView和tableView进行交互并保持视差效果?
答案 0 :(得分:2)
如果你想通过视图传递触摸,你可以覆盖视图上的hitTest并将命中传递给另一个。
在我的情况下,我有一个非常窄的scrollview,把它放到一个更大的容器中并将其设置为属性(touchReceivingView)。在容器上,我使用以下代码将hitTest传递给另一个视图:
- (UIView *) hitTest:(CGPoint)point withEvent:(UIEvent *)event {
if ([self pointInside:point withEvent:event]) {
return touchReceivingView;
}
return nil;
}
答案 1 :(得分:0)
您是否尝试将userInteraction禁用为水平滚动视图并实施UISwipeGestureRecognizer
以捕获用户的滑动?
之后,您可以根据识别器触发的事件以编程方式“移动”水平滚动视图