滚动其子uiscrollview时如何防止滚动uiscrollview?
Posted
技术标签:
【中文标题】滚动其子uiscrollview时如何防止滚动uiscrollview?【英文标题】:how to prevent scrolling uiscrollview when scroll its sub-uiscrollview? 【发布时间】:2016-04-21 18:28:13 【问题描述】:我在 main-ScrollView 中添加了一个 sub-ScrollView,它们都可以水平滚动。当我将 sub-scrollview 滚动到(右或左)边缘时,如果我继续向右或向左滚动,则会导致 main-scrollview 滚动。
我尝试在每个scrollview上使用scrollview的didScroll委托方法来解决它但是失败了,当main-ScrollView移动时,不会检测到子scrollview中的委托方法。 任何的想法?谢谢。
【问题讨论】:
【参考方案1】:感谢 Alex 的回答,但是如果设置 superScrollView.pagingEnabled = true,exclusiveTouch 将不起作用。这是我的解决方案:
@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
【讨论】:
【参考方案2】:试试innerScrollView.exclusiveTouch = true
【讨论】:
刚刚注意到您在标签中提到了 ObjC。所以,innerScrollView.exclusiveTouch = YES;
嗨,Alex,感谢您的回复,但对我来说不起作用。以上是关于滚动其子uiscrollview时如何防止滚动uiscrollview?的主要内容,如果未能解决你的问题,请参考以下文章
水平 UIScrollView 内部有垂直 UIScrollViews - 滚动外部水平视图时如何防止滚动内部滚动视图?
如何防止使用 UICollectionView 滚动 UIScrollView