iPhone - 防止UIScrollView被触摸滚动

40

我有一个滚动视图,在两侧有两个按钮,左边和右边。

当我点击滚动视图时,它会向左移动;当我点击右边的按钮时,它将向右移动。我的滚动视图有大约20个按钮,并且在每个按钮上单击时都会执行某些操作。

所有功能都已经完美实现并正常工作。

唯一无法实现的是防止触摸滚动。我不想让用户手动滚动滚动视图。如何防止通过触摸来滚动并仍然能够单击滚动视图内的按钮?


4
听起来你提出了一个重要的问题。你正在为一个触摸设备编写代码,人们习惯通过拖动手指来滚动屏幕,这是最自然的操作。我建议你重新考虑你的设计,多为用户着想。 - jer
如果你不想让触摸生效,为什么要使用滚动视图呢?只需使用普通的 UIView 即可。 - fishinear
5个回答

109
尝试设置yourScrollView.scrollEnabled = NO;。那应该正好符合你的需求。

4
我知道这是不允许的,因此请尝试通过setter方法进行设置[scrollView setScrollEnabled:NO]; - virindh
5
如果你使用Swift,yourScrollView.isScrollEnabled = false 是正确的语法。 - Markus
非常好的点赞与回答字符比例!谢谢。 - Dan Rosenstark
谢谢。对于WKWebView也适用... webView.scrollView.isScrollEnabled = false; - mikep

6

Swift 3

self.scrollView.isScrollEnabled = false

6

Swift,设置scrollView.isScrollEnabled = false即可解决问题!


0
如果这些按钮是用户的唯一接口,则在Interface Builder中禁用滚动视图的“User Interaction Enabled”选项。或者,以编程方式将userInteractionEnabled属性设置为NO。

很好!我的scrollView与tableView相符,所以我更喜欢保持它滚动的解决方案,但不启用用户交互。谢谢。 - Thomás Pereira

0
也许你的问题是在使用UIView.animate和选项[.allowUserInteraction]时,没有设置。
设置了这个选项后,滚动视图应该在点击时停止。

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