我将一个子ScrollView添加到一个主ScrollView,它们都能够水平滚动。当我将子滚动视图滚动到(右或左)边缘时,如果我继续向右或向左滚动,将导致主滚动视图滚动。
我尝试在每个scrollview上使用scrollview didScroll委托方法来解决它但失败了,当main-ScrollView移动时,将不会检测到子scrollview中的委托方法。 任何的想法?感谢。
答案 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