whatsapp
のように、長い文字列を入力するときにtextviewの高さのサイズを変更するようにしたいとします。しかし、一度それが最大の高さに達すると、テキストビューは最大の高さにとどまり、テキストビューはスクロール可能になります。メッセージに返信するときは、whatsapp
のテキストビューとまったく同じです。UITextViewは、最大高さを制限して高さを動的に変更します
動的にサイズを変更する方法が見つかりましたが、textView.isScrollEnabled = true
が最大高さに達すると設定すると、テキストビューは縮小されますがスクロール可能になります。
テキストビューをwhatsapp
のtextviewとまったく同じようにするにはどうすればよいですか?
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(updateHeight), name: NSNotification.Name.UITextViewTextDidChange, object: nil)
textView.isScrollEnabled = false
// ...
}
func updateHeight() {
var contentSize = textView.sizeThatFits(textView.bounds.size)
contentSize.width = UIScreen.main.bounds.width
if contentSize.height > UIScreen.main.bounds.height/5{
textView.isScrollEnabled = true
contentSize.height = UIScreen.main.bounds.height/5
} else {
textView.isScrollEnabled = false
}
textView.frame.size = contentSize
}
自動レイアウトを使用していますか?はいの場合、あなたはどのような制約を与えましたか? –
textView.top = tableView.buttom –
高さの制約がある場合は、コンセントを取って毎回フレームを設定するのではなく定数を変更してください。 –