Objective c 在UIScrollView的子视图中禁用水平滚动
我有3个Objective c 在UIScrollView的子视图中禁用水平滚动,objective-c,ios,uiscrollview,Objective C,Ios,Uiscrollview,我有3个UIScrollView,称它们为A,B,和C A是一个分页滚动视图,其中有许多B滚动视图作为子视图(页面)添加。 B仅垂直滚动。 C是作为子视图添加到ui视图的滚动视图,该视图作为子视图添加到B 我试图实现的功能是: 如果在容纳C的ui视图中出现水平滚动,则不允许对A进行分页。但是,仍然允许垂直滚动B实现-(void)scrollViewDidScroll:(UIScrollView*)scrollView以确定哪个scrollView正在滚动,然后检查scrollView的conte
UIScrollView
,称它们为A
,B
,和C
A
是一个分页滚动视图,其中有许多B
滚动视图作为子视图(页面)添加。
B
仅垂直滚动。
C
是作为子视图添加到ui视图的滚动视图,该视图作为子视图添加到B
我试图实现的功能是:
如果在容纳C
的ui视图
中出现水平滚动,则不允许对A
进行分页。但是,仍然允许垂直滚动B
实现-(void)scrollViewDidScroll:(UIScrollView*)scrollView
以确定哪个scrollView正在滚动,然后检查scrollView的contentOffset
属性以确定scrollView的滚动位置ScrollViewDiEndDecelling
delegate可用于检测滚动结束
例如:-
- (void)scrollViewDidScroll:(UIScrollView*)scrollView {
if (scrollView == C) {
//disable scrolling of A
}
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
if (scrollView == C) {
//enable scrolling of A
}
}
根据您的具体要求,您可以使用这两个委托和特定scrollview的contentOffset
,以获得所需效果。我在测试应用程序中设置了三层嵌套的滚动视图,就像您描述的那样:具有3页的顶级水平分页滚动视图,每个页面包含一个垂直滚动滚动视图,每个垂直滚动视图包含一个水平滚动滚动视图。在iOS 5.0和iOS 6.0模拟器下,一切都可以正常工作。在任意位置垂直拖动可滚动垂直滚动视图。在最里面的滚动视图外部水平拖动,在页面之间滚动。在最里面的滚动视图中水平拖动滚动视图,滚动视图不会改变页面。