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

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

【问题讨论】:

  • 你需要将scrollView.contentSize设置为大于它的frame size才能滚动。如果要水平滚动,请将 contentSize 的宽度设置为大于框架宽度。

标签: ios swift uiscrollview


【解决方案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
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多