ios – 如何动态地将TextView高度更改为阈值,然后允许滚动?

我有一个TextView,它具有最小高度为33的约束.从故事板中禁用滚动. TextView应根据内容增加高度,直到达到100的最大高度.然后我将scrollEnabled更改为true,将TextView的高度更改为最大高度100,但高度更改为33.如何修复这个问题?

import UIKit

class ViewController: UIViewController,UITextViewDelegate {

@IBOutlet weak var messageTextView: UITextView!
let messageTextViewMaxHeight: CGFloat = 100

override func viewDidLoad() {
    super.viewDidLoad()
    self.messageTextView.delegate = self
}

func textViewDidChange(textView: UITextView) {

    if textView.frame.size.height >= self.messageTextViewMaxHeight {
        textView.scrollEnabled = true
        textView.frame.size.height = self.messageTextViewMaxHeight
    } else {
        textView.scrollEnabled = false
    }
}
}

enter image description here

解决方法

看来你的代码需要两个更改,它会正常工作.

>取代最小约束高度,提供最大高度100:

Height Constraint for TextView

>更改代码如下:

import UIKit

class ViewController: UIViewController,UITextViewDelegate
{
    @IBOutlet weak var messageTextView: UITextView!

    let messageTextViewMaxHeight: CGFloat = 100
    override func viewDidLoad()
    {
        super.viewDidLoad()
        messageTextView.delegate = self
    }

    func textViewDidChange(textView: UITextView)
    {
        if textView.contentSize.height >= self.messageTextViewMaxHeight
        {
            textView.scrollEnabled = true
        }
        else
            {
            textView.frame.size.height = textView.contentSize.height
            textView.scrollEnabled = false // textView.isScrollEnabled = false for swift 4.0
        }
    }
}

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...