将垂直滚动从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]; } }
这将使您的滚动同时与UITableView
和UIScrollView
和应用@Stephen约翰逊的块
- (BOOL)gestureRecognizer:(UIPanGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UISwipeGestureRecognizer *)otherGestureRecognizer { return YES; }