在UITextView上启用滚动

时间:2015-05-02 10:27:05

标签: ios swift uiscrollview uitextview

我在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!
     }
  }

2 个答案:

答案 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)

如果文字较长,则会启用滚动功能。
祝你好运!