我有一个包含一堆子 UIScrollViews 的父 UIScrollView,每个滚动视图都可以向各个方向滚动。在每个孩子的顶部,有一个 UIView,父视图的子视图。
我只想在用户从上部 UIView 之一拖动时启用父滚动。
有什么想法吗?谢谢 !
我有一个包含一堆子 UIScrollViews 的父 UIScrollView,每个滚动视图都可以向各个方向滚动。在每个孩子的顶部,有一个 UIView,父视图的子视图。
我只想在用户从上部 UIView 之一拖动时启用父滚动。
有什么想法吗?谢谢 !
好的,我终于找到了一些东西!通过覆盖-(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];
}`
您可以尝试使用 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 上的滚动。