我正在尝试使用类似于 iPhone 消息的 TextView ,其中 TextView 最初具有约束(高度 <= 100)并且 scrollEnabled = false
这是项目的链接: https://github.com/akawther/TextView
TextView 根据内容大小增加高度,如左图所示,直到达到 100 的高度,然后将 scrollEnabled 设置为 true。在我单击右下角的“发送”按钮之前,它工作正常,其中 textView 应该变为空并返回到原始高度并且 scrollEnabled 变为 false。中间的图像显示了单击按钮时发生的情况。当我开始打字时,textview 会向下移动,如您在右侧最后一张图片中所见。 我希望能够单击按钮并消除中间图像上显示的行为,我该如何解决这个问题?
import UIKit
class ViewController: UIViewController, UITextViewDelegate {
@IBOutlet weak var bottomConstraint: NSLayoutConstraint!
@IBOutlet weak var messageTextView: UITextView!
@IBOutlet weak var parent: UIView!
let messageTextViewMaxHeight: CGFloat = 100
override func viewDidLoad() {
super.viewDidLoad()
self.messageTextView.delegate = self
}
@IBAction func Reset(sender: AnyObject) {
messageTextView.text = ""
messageTextView.frame.size.height = messageTextView.contentSize.height
messageTextView.scrollEnabled = false
self.parent.layoutIfNeeded()
}
func textViewDidChange(textView: UITextView) {
if textView.frame.size.height >= self.messageTextViewMaxHeight {
textView.scrollEnabled = true
} else {
textView.scrollEnabled = false
textView.frame.size.height = textView.contentSize.height
}
}
}
您可以在 github 项目中按照以下步骤复制我的问题: 1. 继续输入单词并按回车键,直到您开始看到滚动条 2.点击按钮你会看到textview变成了蓝色 容器。这就是我要消除的问题!
最佳答案
试试下面的代码:-
@IBAction func Reset(sender: AnyObject) {
messageTextView.scrollEnabled = false
messageTextView.text = ""
messageTextView.frame.size.height = messageTextView.contentSize.height
parent.frame.size.height = 20
self.view.layoutIfNeeded()
}
func textViewDidChange(textView: UITextView) {
if textView.contentSize.height >= self.messageTextViewMaxHeight {
textView.scrollEnabled = true
} else {
textView.frame.size.height = textView.contentSize.height
textView.scrollEnabled = false
}
}
关于ios - 动态 UITextView 错位行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38470967/