我在ContainerView中创建了一个UIScrollView,在UIScrollView中创建了一个UITextView子视图。我将scrollEnabled设置为true初始化textView。现在基于scrollView的contentOffset.y,我想继续在textView上切换scrollEnabled。但由于某种原因,一旦我将scrollEnabled设置为false,我似乎无法再次启用滚动...
override func viewDidload() {
self.scrollView = UIScrollView(frame: CGRectMake(...))
self.scrollView.delegate = self
self.view.addSubview(self.scrollView)
self.textView = UITextView(frame: CGRectMake(...))
self.textView.scrollEnabled = true
self.textView.userInteractionEnabled = true
self.scrollView.addSubview(self.textView)
}
func scrollViewDidScroll(scrollView: UIScrollView) {
if self.scrollView.contentOffset.y >= 180 {
self.textView.scrollEnabled = true // This does not work!
} else {
self.textView.scrollEnabled = false // This works!
}
}
答案 0 :(得分:1)
我遇到了同样的问题,最终通过子类化UITextView处理它,如下所示:
class TextView: UITextView {
var displayScrolling: Bool = true {
didSet {
self.showsVerticalScrollIndicator = displayScrolling
}
}
override var contentOffset: CGPoint {
set {
if displayScrolling {
super.contentOffset = newValue
}
}
get {
return super.contentOffset
}
}
}
在init(或界面构建器)中,将TextView实例设置为允许滚动。要不滚动,请设置' displayScrolling' var为false。如果要滚动,请设置' displayScrolling'为真。
答案 1 :(得分:-3)
如果文字较长,则会启用滚动功能。
祝你好运!