Swift UIScrollView 不滚动但响应 setContentOffset 和 Delegate 响应

Posted

技术标签:

【中文标题】Swift UIScrollView 不滚动但响应 setContentOffset 和 Delegate 响应【英文标题】:Swift UIScrollView not scrolling but responding to setContentOffset and Delegate responds 【发布时间】:2014-07-10 18:36:53 【问题描述】:

在这里遇到了一个非常奇怪的事件,UIScrollView 只是拒绝滚动。我在我的 StoryBoard 中设置它并在我的ViewDidLoad 中正确设置contentSize。我仔细检查以确保它是Scrollable 等,但它只是不工作。我设置了scrollView.setContentOffset(),它通过一个可爱的动画滚动很好,ScrollViewDidScroll 委托被调用。那么,说了这么多,为什么它可能无法通过拖动手势滚动?

我检查过的内容: - UserInteraction 自行启用,全部为 sub/superviews。 - Scrollable. - 切换:DelaysContentTouchesCancellableContentTouches

我没有想法。目前使用Xcode 6 Beta 1。任何帮助将不胜感激。

问候, 迈克

【问题讨论】:

【参考方案1】:

由于自动布局,它不会使用拖动手势滚动。在 viewDidLoad 中,自动布局将在您定义后重置内容大小。您有两个选择:您可以禁用自动布局,或者您可以在 viewDidLayoutSubviews 中设置 contentSize。

override func viewDidLayoutSubviews() 
    super.viewDidLayoutSubviews()
    scrollView.contentSize = CGSize(width:10, height:10)

【讨论】:

他只是走了而已。非常感谢,马上解决了问题。这应该教会我在 swift 出现之前不要使用 AutoLayout。自从它推出以来的这些年里,我从未选择过 AutoLayout,因为我认为这很麻烦。现在已经用了几个月了,真的很喜欢。我想我得边走边学所有这些小花絮。向前向上!

以上是关于Swift UIScrollView 不滚动但响应 setContentOffset 和 Delegate 响应的主要内容,如果未能解决你的问题,请参考以下文章

UIScrollView 的一部分不响应触摸

UIScrollView 中的 Swift UITableView(不滚动)

Swift:以编程方式添加视图时,UIScrollView 的可滚动内容大小不明确,而不使用 IB

iOS中的UIScrollView不响应滚动到顶部

UIScrollView 在键盘关闭时停止滚动

防止重叠的 UIScrollView 滚动