从UIScrollView转发垂直滚动到兄弟UITableView

时间:2014-11-17 07:55:47

标签: ios uitableview uiscrollview uikit

我有一个具有此层次结构的视图控制器:

查看控制器:

  • UIScrollView(水平滚动)
  • UITableView(垂直滚动)

enter image description here

我想将UIScrollView的垂直滚动条转发给同级UITableView,以便当用户向上滚动UIScrollView时,UITableView会向上滚动代替。最好的方法是什么?

我试过这些:

  • 检测scrollViewDidScroll中的垂直滚动,因为滚动视图的contentOffset没有改变,所以不会调用它。
  • UIScrollView进行子类化并覆盖touchesMoved,我无法将触摸转发到表格视图,因为我在此课程中没有引用它。

2 个答案:

答案 0 :(得分:3)

如果表视图包含在滚动视图中,我相信您可以设置滚动视图的手势识别器,以便仅在表视图的手势识别器失败时进行响应。我没有机会尝试这个,但你应该能够在每个视图的手势之间建立依赖关系。

UITableView* tableView = ...;
UIScrollView* scrollView = ...;
for (UIGestureRecognizer* r in scrollView.gestureRecognizers)
{
    for (UIGestureRecognizer* tableRecognizer in tableView.gestureRecognizers)
    {
        [r requireGestureRecognizerToFail:tableRecognizer];
    }
}

答案 1 :(得分:3)

这会使您同时使用UITableViewUIScrollView滚动并应用 @Stephen Johnson 的阻止

 - (BOOL)gestureRecognizer:(UIPanGestureRecognizer *)gestureRecognizer
 shouldRecognizeSimultaneouslyWithGestureRecognizer:(UISwipeGestureRecognizer *)otherGestureRecognizer
 {
     return YES;
 }