阻止UIScrollView的横向或纵向滚动

原理

UIScrollView的滚动,真正滚动的不是scrollView本身,而是它的content。scrollView根据自身的frame.size和它的content的size,从而计算content的滚动。正常情况下,content的size是大雨scrollView的,这样就能够任意的滚动

任意滚动

所以在scrollView的content的宽度小于或等于scrollView.frame.size.width的时候,没有办法做横向的滚动,因为content已经全部展示在scrollView中了,没有滚动的必要。

禁止了横向滚动

同理,在scrollView的content的高度小于或等于scrollView.frame.size.height的时候,没有办法做纵向的滚动。

禁止了纵向滚动

实现

现在咱们要做的就是在代码里面针对性的进行修改,以禁止竖向滚动为例:

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    // 使得contentSize的height等于_scroller的高度,就能禁用纵向滚动
    self.scroller.contentSize = CGSizeMake(640, _scroller.frame.size.height);
    _scroller.delegate = self;
}

参考文献

UIScrollView Class Reference

Disabling vertical scrolling in UIScrollView

发表评论