从UIScrollView Swift禁用水平滚动

Gre*_*ory 21 uiscrollview ios swift

滚动视图

我有一个UIScrollView,有约束 left: 0, top: 0, right: 0, bottom: 0

内部滚动视图

最重要的UIScrollView是UIImageView有限制left: 0, top: 0, right: 0, height: 200

在这下面我有一个UITextView约束left: 0, top: 0, right: 0, bottom: 0

这意味着UITextView将针对其内容调整大小,我设置scrollingEnabled到false了UITextView.

所以,当我跑步时,它几乎完美无缺.

一个问题是UIImageView占用的实际屏幕宽度大约多10%.因此,启用水平滚动.

我试过添加线条

imageView.frame = CGRect(0, 0, screenSize.width, 200)
scrlView.contentSize.width = screenSize.width
Run Code Online (Sandbox Code Playgroud)

但这没什么区别.我仍然可以水平滚动,图像视图仍然占据实际屏幕宽度的10%左右.

注意,我没有在storyboard中设置imageView屏幕宽度,只是以编程方式.

有任何想法吗?

the*_*des 23

我改变了它,它只返回0.如果你想要滚动,根本不需要检查.

func scrollViewDidScroll(scrollView: UIScrollView) {
    scrollView.contentOffset.x = 0
}
Run Code Online (Sandbox Code Playgroud)

无需方向锁.

  • 也适用于垂直,只将`.x`改为`.y` (2认同)

Lox*_*oxx 19

像这样,

func scrollViewDidScroll(scrollView: UIScrollView) {
    if scrollView.contentOffset.x>0 {
        scrollView.contentOffset.x = 0
    }
}
Run Code Online (Sandbox Code Playgroud)

并且,您可以设置此属性:

scrollImg.directionalLockEnabled = true
Run Code Online (Sandbox Code Playgroud)

  • 您也应该添加 `scrollView.contentOffset.x < 0`,否则很好的答案。 (3认同)

小智 19

斯威夫特4

水平滚动锁

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    if scrollView.contentOffset.x != 0 {
        scrollView.contentOffset.x = 0
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以将x更改为y以进行垂直滚动.

确保像这样添加UIScrollViewDelegate:

class MyViewController: UIViewController, UIScrollViewDelegate {

    @IBOutlet var scrollView: UIScrollView!

    ...
}
Run Code Online (Sandbox Code Playgroud)

并为ScrollView设置委托

scrollView.delegate = self
Run Code Online (Sandbox Code Playgroud)