我有一个包含一堆子UIScrollViews的父UIScrollView,每个scrollview都可以在每个方向滚动。在每个孩子的顶部,有一个UIView,父母的子视图。
我想只在用户从上面的UIView中拖出时才启用父滚动。
有没有想过这样做?谢谢!
答案 0 :(得分:0)
您可以尝试使用touchesBegan检测用户触摸的位置:如果它位于其中一个UIViews内,则可以禁用所有子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;
}
然后在触摸结束方法中,只需重新启用子滚动视图滚动。
答案 1 :(得分:0)
好的,我终于找到了一些东西!通过覆盖父滚动视图的回调-(UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event
。
` - (UIView *)hitTest:(CGPoint)指向withEvent:(UIEvent *)事件 {
if (CGRectContainsPoint(myFrame, point))
{
self.scrollEnabled = YES;
}
else
{
self.scrollEnabled = NO;
}
return [super hitTest:point withEvent:event];
}`