滚动其子urollrollview时如何防止滚动uiscrollview?

时间:2016-04-21 18:28:14

标签: ios objective-c uiscrollview

我将一个子ScrollView添加到一个主ScrollView,它们都能够水平滚动。当我将子滚动视图滚动到(右或左)边缘时,如果我继续向右或向左滚动,将导致主滚动视图滚动。

我尝试在每个scrollview上使用scrollview didScroll委托方法来解决它但失败了,当main-ScrollView移动时,将不会检测到子scrollview中的委托方法。 任何的想法?感谢。

2 个答案:

答案 0 :(得分:1)

感谢Alex的回答,但是如果您设置superScrollView.pagingEnabled = true,则独占触摸将不起作用。这是我的解决方案:

@interface SuperScrollView : UIScrollView

@end

@implementation SuperScrollView

//disable scroll when sub scrollView drags
-(UIView *)hitTest:(CGPoint) point withEvent:(UIEvent *)event {
    UIView *hint = [super hitTest:point withEvent:event];
    if(!hint){
        return nil;
    }
    if([self isInSubScrollView:hint]){
        self.scrollEnabled = false;
    }
    else{
        self.scrollEnabled = true;
    }
    return hint;
}

-(BOOL)isInSubScrollView:(UIView*)view{
    if([view isKindOfClass:UIScrollView.class]){
        return view != self;
    }
    while (view.superview) {
        view = view.superview;
        if([view isKindOfClass:UIScrollView.class]){
            return view != self;
        }
    }
    return false;
}

@end

答案 1 :(得分:0)

尝试innerScrollView.exclusiveTouch = true