2014-03-26 143 views
1

我想有一个UIScrollView,我可以与UITableView进行交互(主要是水平滑动来显示图像)。UITableView +可触摸的UIView/UIScrollView behin

我们的想法是,设置的UITableView tableHeaderView相同尺寸比具有明显的backgroundColor和不透明组为NO的UIScrollView的,并添加

[self.view addSubview:self.scrollView belowSubview:self.tableView]; 

因此,UITableView的将逐渐覆盖图像画廊滚动时 - 如果我直接将UIScrollView设置为tableHeaderView或作为节标题,则不会出现这种情况。

它起作用(从视觉角度来看)。

但是我不能在下面的UIScrollView上进行交互或刷卡,所有东西都被tableView拦截。我认为设置清洁颜色+不透明=否会做的伎俩。

有什么想法?

感谢

罗曼

回答

2

所以,据我所知,你要放置UITableView的顶部,其内容将出现在UIScrollView,但你想要的UIScrollView接收触摸事件?如你所设置的那样,这是不可能发生的,因为UITableView将在其边界内接收所有触摸事件,因为它必须启用用户交互。 考虑以下之一:基于其滚动位置

  1. 修改UITableView,这样反而有tableHeaderView的,表视图自身的大小(你可以用一个UIScrollViewDelegate跟踪此),所以它涵盖了UIScrollView为表格视图滚动。
  2. 覆盖UITableViewtableHeaderView中的触摸处理方法(touchesBegan:withEvent:等),以便在适当时手动将触摸事件转发到UIScrollView。这是一个讨厌的解决方案,但它可能会诀窍。
  3. 重写pointInside:withEvent:里面的UITableView。该方法是触摸处理系统用来确定视图是否最初应该接受触摸事件的方法。如果将其修改为拒绝要将触摸发送到UIScrollView的点,那么它将不会在该区域接收到任何触摸,并且它们将默认到它下面的视图。
+0

感谢您的评论。据我了解,3)可能适当/更快的解决方案? 我会试一试,让你知道尽快。 谢谢 罗曼 –

+0

小心#3。这是一个关键的方法,如果修改方法不当可能会导致很难修复的错误,但这是完成预期设计的最简单方法。 –

+0

我首先提出你的第一个建议:基本上,它运作良好。但是,在scrollviewDidScroll委托中滚动时,我并不满意UX。 我决定去第四个选项:我保留我的UITableView .tableHeaderView,在它上面添加UISwipeGestureRecognizer(左/右),并用它们来控制UITableView下面的UIPageControl和UIScrollView。 感谢您的支持:) –