UIScrollView应该仅向下滚动。

3

我有一个滚动视图,希望它只能向滚动,而且不能在任何其他方向上滚动。这不是关于水平或垂直的问题,而是我希望滚动视图仅在垂直模式下向下滚动,而不是向上滚动。


你需要将scrollView.contentSize设置为大于其frame大小以进行滚动。如果想要水平滚动,请将contentSize的宽度设置为大于frame的宽度。 - nynohu
可能是https://dev59.com/1W435IYBdhLWcg3whQY5的重复问题。 - user3581248
1个回答

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)
        }
    }
}

1
为什么你只想让用户向下滚动而不允许他们向上滚动呢?这是一个非常糟糕的用户界面决策,苹果指南指出:“用户应该始终掌控而非应用程序”。如果不允许用户向上滚动,你就会夺走用户的控制权。 - torinpitchers
用户将能够通过使用按钮而不是滚动来向上滚动。 - Khushal Dugar
我已经更新了我的回答,它将会做你需要的事情。 - torinpitchers
谢谢 @torinpitchers - Khushal Dugar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接