UIScrollView 子视图中滚动事件的锁定处理(在 UIScrollView 超级视图内)
Posted
技术标签:
【中文标题】UIScrollView 子视图中滚动事件的锁定处理(在 UIScrollView 超级视图内)【英文标题】:Lock handling of scroll event in UIScrollView subview (inside a UIScrollView superview) 【发布时间】:2014-09-22 05:06:10 【问题描述】:我有一个复杂的视图层次结构:
UIScrollView
- UITableView
- UICollectionView
UICollectionView
和 UIScrollView
都水平滚动。现在,我想专门在UICollectionView
上捕获滑动手势,以便超级视图 (UIScrollView
) 忽略它。
用户可以向左滑动以到达UICollectionView
的末尾。最后,UICollectionView
上的滑动手势被忽略并被超级视图 (UIScrollView
) 捕获,并且界面发生变化。我怎样才能防止这种情况发生?
注意:我使用的是 UIScrollView 和 UICollectionView 提供的默认滑动功能,即我没有添加任何自定义滑动手势处理。
【问题讨论】:
您可以使用 UIScrollView 的委托方法,在其中您可以识别/决定哪个 scrollView 将能够滚动 可以使用scrollEnable属性来决定 【参考方案1】:在您的 ViewController.m 中
-(void)viewDidLoad
scrollView.delegate = self;
collectionView.delegate = self;
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
if (the scrollView didn't reached the end)
then collectionView can't scroll
else
collectionView can scroll
您可以使用contentOffset
属性检查scrollView
是否到达末尾
别忘了声明你使用的是scrollView的委托
希望对你有帮助
【讨论】:
以上是关于UIScrollView 子视图中滚动事件的锁定处理(在 UIScrollView 超级视图内)的主要内容,如果未能解决你的问题,请参考以下文章
将 UIButtons 添加为子视图时 UIScrollView 不滚动
如何在 UIScrollview 中触发 UIViewcontroller 视图的旋转事件
(iphone) uiscrollview 触摸。取消内容触摸并开始滚动