分页 UIScrollView 内的 UIScrollView

Posted

技术标签:

【中文标题】分页 UIScrollView 内的 UIScrollView【英文标题】:UIScrollView inside paged UIScrollView 【发布时间】:2013-10-29 11:06:28 【问题描述】:

我在分页 UIScrollView(外部)中的 VC 中有 UIScrollView(内部 - UICollectionView 老实说)。两者都是水平的。 当我从内滚动到边缘(左侧或右侧)时,它开始将触摸传递给外滚动并且外滚动开始滚动。 如何避免这种行为?我希望外滚动不对内滚动中的触摸做出反应。

【问题讨论】:

【参考方案1】:

你可以在外层UIScrollView下面放一个UIView,设置为userInteractionEnabledNO

【讨论】:

如何防止将拖动事件从内部滚动传递到外部滚动? 如果设置为 userInteractionEnabled = NO;那么它不会通过拖动事件 问题是我直接触摸内部滚动视图,当我拖动(我没有释放手指)到它的内容端时,它开始将触摸传递到外部滚动视图。【参考方案2】:

我发现了如何做到这一点: 子类 UIScrollView - 这将是你的外部滚动视图 现在方法:

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer 
    UIView *touchedView = gestureRecognizer.view;
    CGPoint loc = [gestureRecognizer locationInView:touchedView];
    UIView* subview = [touchedView hitTest:loc withEvent:nil];

    if([[subview nextResponder] isKindOfClass:[MyInnerScrollVC class]]) 
        return NO;
     else 
        return YES;
    

就是这样

【讨论】:

以上是关于分页 UIScrollView 内的 UIScrollView的主要内容,如果未能解决你的问题,请参考以下文章

UiScrollView 高度不正确(没有 AutoConstraint)

限制UIScrollView中的可滚动区域

缩放和重绘 UIScrollView 内容后设置 contentOffset

在 UIScrollview 中禁用对角线拖动

如何在 ios 中为 UIScrollView 设置对齐方式

更改界面方向时UIScrollView上的奇怪跳转(ATPagingView)