UIScrollView 通过在框架内拖动来滚动
Posted
技术标签:
【中文标题】UIScrollView 通过在框架内拖动来滚动【英文标题】:UIScrollView's scrolling by dragging within a frame 【发布时间】:2013-07-12 21:57:41 【问题描述】:我有一个包含一堆子 UIScrollViews 的父 UIScrollView,每个滚动视图都可以向各个方向滚动。在每个child的顶部,都有一个UIView,是parent的子view。
我只想在用户从上面的 UIView 之一拖动时启用父级滚动。
有什么想法吗?谢谢!
【问题讨论】:
【参考方案1】:您可以尝试使用 touchesBegan: 检测用户触摸的位置,如果它位于其中一个 UIView 中,那么您可以禁用所有子 scrollView 的滚动(甚至交互)。所以在代码中:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
//check if touch is in one of the UIViews
//if so disable child UIScrollView interaction like so:
childScrollView.scrollEnabled = NO;
然后在 touches end 方法中重新启用子 scrollViews 上的滚动。
【讨论】:
这是我正在寻找的解决方案,但不幸的是,touchesBegan: 在我滚动时不会被调用。【参考方案2】:好吧,我终于找到东西了!通过覆盖父滚动视图的回调-(UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event
。
`-(UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event
if (CGRectContainsPoint(myFrame, point))
self.scrollEnabled = YES;
else
self.scrollEnabled = NO;
return [super hitTest:point withEvent:event];
`
【讨论】:
以上是关于UIScrollView 通过在框架内拖动来滚动的主要内容,如果未能解决你的问题,请参考以下文章