将垂直滚动从UIScrollView转移到兄弟UITableView

我有一个视图控制器与这个层次结构:

视图控制器:

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

在这里输入图像说明

我想将垂直滚动从我的UIScrollView转发到兄弟UITableView ,以便当用户在UIScrollView上滚动时, UITableView将向上滚动。 什么是最好的办法呢?

我试过这些:

  • 检测scrollViewDidScroll的垂直滚动,它不会被调用,因为滚动视图的contentOffset不会更改。
  • 子类UIScrollView和重写touchesMoved ,我不能转发触摸到表视图,因为我没有在这个类的引用。

如果tableview包含在滚动视图中,我相信你可以设置滚动视图的手势识别器,只有当表视图的手势识别器失败时才会作出响应。 我没有机会尝试这个,但是你应该能够在每个视图的手势之间build立一个依赖关系。

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

这将使您的滚动同时与UITableViewUIScrollView和应用@Stephen约翰逊的块

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