UIScrollView:没有什么是滚动

时间:2016-07-05 20:05:34

标签: ios swift uiscrollview

我正在努力让UIScrollView工作,但我遇到了一些困难。当我尝试滚动时,我的屏幕上什么都没有移动。

没有内容大小模糊警告,这让我相信我已正确设置我的内容大小,并且约束(我希望)很好(我有一个视图,其中包含一个滚动视图,其中包含一个视图4个文本域和textview)。

我尝试使用viewDidLayoutSubviews()以编程方式将内容大小设置为非常大,但这也无济于事。

我在这些方法中添加了:

func scrollViewWillBeginDragging(scrollView: UIScrollView) {
    print("touch detected")
}

func scrollViewDidScroll(scrollView: UIScrollView) {
    print("scrolling happened")
}

当我运行我的应用程序并尝试手动滚动时,“触摸检测到”会被打印一次并且“滚动发生”会打印多次。我很困惑,因为似乎正在调用正确的方法,但我看不到任何滚动。

另外,我有这个方法:

func keyboardWasShown(aNotification: NSNotification) {
    let info = aNotification.userInfo
    let kbSize = info![UIKeyboardFrameBeginUserInfoKey]?.CGRectValue().size
    let contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbSize!.height, 0.0)
    scrollView.contentInset = contentInsets
    scrollView.scrollIndicatorInsets = contentInsets
}

然而,即使我点击被键盘遮盖的文本字段,我的屏幕也不会向上滚动。

我尝试在这里搜索实现了很多解决方案,但似乎没有任何帮助。如果有人对可能出现的问题有任何想法,我会非常感激!非常感谢你!!

1 个答案:

答案 0 :(得分:0)

滚动视图是自动布局的一个例外情况。确保您已按Technical Note TN2154

中所述配置约束

此外,如果您的委托方法指示正在进行滚动,但您没有看到内容移动,请仔细检查内容实际上是滚动视图的子视图,而不是滚动视图的子视图& #39;超级视图仅覆盖滚动视图。

请记住,UIKit应仅用于主线程 - 滚动视图的奇怪行为是尝试从后台线程使用UIKit的一种症状。

最后,使用the view debugger built into Xcode在运行时检查视图层次结构。