【问题标题】:Disable horizontal scroll in a subview of UIScrollView在 UIScrollView 的子视图中禁用水平滚动
【发布时间】:2012-10-21 03:03:08
【问题描述】:

我有 3 个UIScrollViews,叫他们ABC

A 是一个分页滚动视图,其中有许多 B 滚动视图作为子视图(页面)添加。 B 仅垂直滚动。 C 是作为子视图添加到 UIView 的滚动视图,UIView 作为子视图添加到 B

我想要实现的功能是:

如果在容纳CUIView 内发生水平滚动,则不允许对A 进行分页。但是,仍然允许B的垂直滚动。

【问题讨论】:

  • 我按照您描述的方式在测试应用程序中设置了三重嵌套滚动视图:具有 3 个页面的顶级水平分页滚动视图,每个页面包含一个垂直滚动滚动视图,以及每个垂直滚动视图都包含一个水平滚动的滚动视图。在 iOS 5.0 和 iOS 6.0 模拟器下一切正常。在任意位置垂直拖动会滚动垂直滚动视图。在页面之间水平拖动最里面的滚动视图滚动。在最里面的滚动视图中水平拖动滚动该滚动视图并且不会更改页面。

标签: objective-c ios uiscrollview


【解决方案1】:

实现- (void)scrollViewDidScroll:(UIScrollView*)scrollView来找出哪个scrollview正在滚动,然后检查scrollview的contentOffset属性来确定scrollview的滚动位置。 scrollViewDidEndDeceleratingdelegate 可用于检测滚动结束。

例如:-

- (void)scrollViewDidScroll:(UIScrollView*)scrollView {
    if (scrollView == C) {
       //disable scrolling of A
    }
}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
    if (scrollView == C) {
        //enable scrolling of A
    }
}

根据您的确切要求,您可以使用这两个委托和该特定滚动视图的contentOffset 来获得所需的效果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-31
    • 2015-11-18
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    • 2012-12-12
    • 1970-01-01
    相关资源
    最近更新 更多