UIScrollView 应该只向下滚动

Posted

技术标签:

【中文标题】UIScrollView 应该只向下滚动【英文标题】:UIScrollView should scroll only downwards 【发布时间】:2017-05-12 07:49:35 【问题描述】:

我有一个滚动视图,我希望该滚动视图仅滚动向下,并且不应向任何其他方向滚动。这与水平或垂直无关,而是我希望滚动视图在垂直模式下仅向下滚动而不是向上滚动。

【问题讨论】:

你需要将scrollView.contentSize设置为大于它的frame size才能滚动。如果要水平滚动,请将 contentSize 的宽度设置为大于框架宽度。 ***.com/questions/5370428/…的可能重复 【参考方案1】:

解决方案

继承 UIScrollView 并重写限制水平滚动的方法,并且仅在方向向下时滚动:

class DownwardsOnlyScrollView: UIScrollView

    override func setContentOffset(_ contentOffset: CGPoint, animated: Bool) 
        // restrict movement to vertical only
        let newOffset = CGPoint(x: 0, y: contentOffset.y)

        //only scroll if scroll direction is downwards
        if newOffset.y > self.contentOffset.y
        
            super.setContentOffset(newOffset, animated: animated)
        
    

【讨论】:

为什么你只想向下滚动而不让用户向上滚动?这是一个非常糟糕的 UI 决策,Apple 指南指出“用户应该始终控制而不是应用程序”。通过不允许他们向上滚动,您将控制权从用户手中夺走。 用户将能够通过使用按钮而不是滚动来向上滚动。 我已经更新了我的答案,可以满足您的需要 谢谢@torinpitchers

以上是关于UIScrollView 应该只向下滚动的主要内容,如果未能解决你的问题,请参考以下文章

UIScrollVIew 中的 UIView 不更新视图

防止uiscrollview向右滚动

防止重叠的 UIScrollView 滚动

UIScrollView 在捏合时自动向下滚动?

UIScrollView 不向下滚动

UIScrollView 不会一直向上/向下滚动