如何在UIScrollView中嵌套UIScrollView,以便用户可以滚动内部UIScrollView?

时间:2009-05-26 12:13:28

标签: iphone cocoa-touch uikit uiscrollview

我还没有尝试过,但我认为只要我知道用户想要在子滚动视图中滚动,我就必须禁用父滚动视图的滚动,对吗?

两个滚动视图都水平滚动。

如何暂时禁用父级的滚动检测?或者还有其他方式吗?

4 个答案:

答案 0 :(得分:9)

UIScrollView有一个名为scrollEnabled的属性,您可以将其设置为NO以禁用父滚动视图中的滚动。

我还没有尝试过,但是你可能会发现它正确的东西,即内部滚动视图滚动直到它不能再滚动,此时外滚动视图滚动。

答案 1 :(得分:2)

很有可能。最简单的方法是禁用scrollEnabled属性,您也可以尝试将外部UIScrollView的{​​{1}}设置为其边界,以便它不会滚动。根据您的需要,您可以将“否”设置为contentSize,但这基本上会使您的滚动视图像普通的UIView一样。

如果你可以控制所有孩子bounce,你可以实施UIScrollView协议,但如果你没有,或者你的孩子UIScrollViewDelegate真的是{{1} }}或UIScrollView,那么你不能真正依赖UITableView协议,但请记住UICollectionView带有UIScrollViewDelegate并且您可以使用它。一个强大但重要的方法是在UIScrollView的{​​{1}}属性上添加一个观察者,这样您就可以捕获所有事件而不必成为panGestureRecognizer的代理人。

答案 2 :(得分:0)

我做了这个,它确实导致父scrollView不再滚动,这很好但是我的子scrollView通过presentModalViewController推送仍然不响应滚动事件(例如向上或向下滚动) 。我显然错过了一些东西......

编辑:最后通过在父视图上使用'scrollEnabled'来实现它。感谢。

答案 3 :(得分:0)

我有同样的问题,直到我动态设置足够高度到内部ScrollView的contentSize,使用:

[scrollView setContentSize:CGSizeMake(scrollView.frame.size.width,600)];

显然这只是一个硬编码的例子,你应该设置显示视图的整个内容所需的高度,最后可能不需要滚动。

似乎使用IBuilder设置scrollView的高度是不够的,所以不需要滚动,这就是为什么我认为扫描事件没有到达内部滚动。

希望这有帮助!