在UIScrollView中禁用垂直滚动

在IB有一个选项来取消滚动视图上的垂直滚动,但它似乎没有工作。

如何将scrollview设置为仅水平滚动,而不是垂直于代码而不是IB?

尝试将contentSize的高度设置为scrollView的高度。 然后垂直滚动应该被禁用,因为没有什么可以垂直滚动。

scrollView.contentSize = CGSizeMake(scrollView.contentSize.width,scrollView.frame.size.height); 

自iOS7以来:

首先:内容大小宽度必须等于您的滚动视图的宽度

第二:在你的initWithNibName:

 self.automaticallyAdjustsScrollViewInsets = NO; 

而已。

是的,pt2ph8的答案是正确的,

但如果由于一些奇怪的原因,你的contentSize应该比UIScrollView更高,你可以禁用垂直滚动实现UIScrollView协议方法

  -(void)scrollViewDidScroll:(UIScrollView *)aScrollView; 

只需在你的UIViewController中添加这个

 float oldY; // here or better in .h interface - (void)scrollViewDidScroll:(UIScrollView *)aScrollView { [aScrollView setContentOffset: CGPointMake(aScrollView.contentOffset.x, oldY)]; // or if you are sure you wanna it always on top: // [aScrollView setContentOffset: CGPointMake(aScrollView.contentOffset.x, 0)]; } 

这只是当用户滚动你的UIScrollView时调用的方法,并且这样做你强制它的内容总是一样的.y

包括以下方法

 -(void)viewDidLayoutSubviews{ self.automaticallyAdjustsScrollViewInsets = NO; } 

并将滚动视图的内容大小宽度设置为等于滚动视图的宽度。

我更新了内容大小以禁用垂直滚动,滚动function仍然保留。 然后我发现我也需要禁用垂直反弹,以完全禁用滚动。

也许有人也有这个问题。

 - (void)scrollViewDidScroll:(UIScrollView *)aScrollView { [aScrollView setContentOffset: CGPointMake(aScrollView.contentOffset.x,0)]; } 

你必须已经确认到UIScrollViewDelegate

 aScrollView.delegate = self; 

您需要在内容大小中传递0以禁用您想要的方向。

禁用垂直滚动

 scrollView.contentSize = CGSizeMake(scrollView.contentSize.width,0); 

禁用水平滚动

 scrollView.contentSize = CGSizeMake(0,scrollView.contentSize.height); 

只要设置y始终在上面。 需要符合UIScrollViewDelegate

 func scrollViewDidScroll(scrollView: UIScrollView) { scrollView.contentOffset.y = 0.0 } 

这将保持滚动的减速/加速效果。