如何将TextView高度动态更改为阈值,然后允许滚动? [英] How to change the TextView height dynamically to a threshold and then allow scrolling?

查看:69
本文介绍了如何将TextView高度动态更改为阈值,然后允许滚动?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个TextView,它的最小高度限制为33。从情节提要中禁用滚动。TextView应根据内容增加高度,直到达到最大高度100。然后,我将scroll Enabled更改为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
        }
    }
}

推荐答案

您的代码似乎需要两处更改,并且工作正常。

  1. 提供最大高度100,而不是约束的最小高度:

  1. 更改代码如下:

     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
            }
        }
    }
    

这篇关于如何将TextView高度动态更改为阈值,然后允许滚动?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆