仅当父滚动视图到达结束时滚动子滚动视图
Posted
技术标签:
【中文标题】仅当父滚动视图到达结束时滚动子滚动视图【英文标题】:Scroll child scrollview only when parent scroll view reaches end 【发布时间】:2017-01-04 10:34:00 【问题描述】:我有一个父 UIScrollView
和一个 UICollectionView
里面的 UIScrollView
。
我希望 UICollectionView
滚动仅在父 UIScrollView
滚动结束时开始。任何人都可以帮助我吗?
【问题讨论】:
在scrollview delagates方法中放入一个codition并检查您当前的滚动是否是您的第一个滚动的结尾,然后禁用它并启用子滚动 如果当前scrollview的contentOffSet小于这个scroll的最大offset,你需要关闭collection view的滚动 您能否展示一下您在解决问题时可能尝试过的所有方法? 【参考方案1】:在 viewDidLoad 中,禁用 Collectionview 滚动。
self.collectionView.scrollEnabled = NO;
现在,使用滚动视图的委托来检测滚动视图的底部,然后启用 CollectionView 滚动。
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
float bottomEdge = scrollView.contentOffset.y + scrollView.frame.size.height;
if (bottomEdge >= scrollView.contentSize.height)
self.collectionView.scrollEnabled = YES;
希望它会起作用。
【讨论】:
【参考方案2】:最初设置子滚动视图yourScrollView.scrollEnabled = NO;
也将标签添加到您的滚动视图。 1个给父母,2个给孩子。
使用此代码了解您是否位于 ScrollView 的底部
-(void)scrollViewDidScroll: (UIScrollView*)scrollView
if(scrollView.tag==1)
float scrollViewHeight = scrollView.frame.size.height;
float scrollContentSizeHeight = scrollView.contentSize.height;
float scrollOffset = scrollView.contentOffset.y;
if (scrollOffset == 0)
// then we are at the top
else if (scrollOffset + scrollViewHeight == scrollContentSizeHeight)
//Handle Code to activate the child scrollView.
// then we are at the end
希望这会有所帮助。快乐编码。
参考SO Post
【讨论】:
以上是关于仅当父滚动视图到达结束时滚动子滚动视图的主要内容,如果未能解决你的问题,请参考以下文章
Swift:仅当键盘隐藏 TextField 或 Button 时滚动视图