在实际代码中,我们iOS的tableView经常会有需要嵌套的情况。
一般来说,嵌套时需要控制上层和下层两个scrollView的滑动时机,我这里提供一种思路来实现。(代码是很耦合的,不容易抽离)
上层scrollView的滑动手势,下层scrollView会没有反应。
这是因为scrollView默认拦截了其他view上面的手势操作,所以要实现如下的方法:
/**
同时识别多个手势
@param gestureRecognizer gestureRecognizer description
@param otherGestureRecognizer otherGestureRecognizer description
@return return value description
*/
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
return YES;
}
上面的方法,就是我们接下来操作的逻辑基础。
因为这个时候,我们在上层scrollView pan手势,两个scrollView都会实现回调方法,进行滚动。
此时,我们就能随心所欲的控制这两个scrollView的滚动。
比如以下几种情况:
1、滚动底层scrollView,达到一个偏移量时,滚动上层scrollView
(对于处于不可滚动状态的scrollView,直接设置contentOffset来固定其位置,因为scrollView的回调方法,不是连续的)
2、左右滑动底层scrollView时,限制上层scrollView同时滚动