私はこれを作成するのに苦労してきました。ここで多数の投稿を読みましたが、何が間違っているのかわかりません。
私は持っていUITextView
ます。
高さを数値まで拡大し、スクロールを有効にしてその高さに固定したいと思います。
私は自分を設定UITextFieldDelegate
し、以下を追加しました-
func textViewDidChange(_ textView: UITextView) {
let newSize = textView.sizeThatFits(CGSize(width: 0, height: CGFloat.greatestFiniteMagnitude))
textView.frame.size = CGSize(width: 0, height: min(100, newSize.height))
}
これを行うと、 が成長し続けることができます。
たとえば、高さ100で停止してスクロールしたいと思います。
func textViewDidChange(_ textView: UITextView) {
let newSize = textView.sizeThatFits(CGSize(width: 0, height: CGFloat.greatestFiniteMagnitude))
let newHeight = min(100, newSize.height)
textView.frame.size = CGSize(width: 0, height: newHeight)
textView.isScrollEnabled = newHeight >= 100
}
この時点で起こるのは、を にisScrollEnabled
設定するとスクロールビューが縮小することだけtrue
です。
top
私の textView は、leading
とtrailing
その親にのみ固定されています。
スクロールが有効になったら、強制的に折りたたまないようにするにはどうすればよいですか?
編集
機能する以下を追加しましたが、固定高さの状態で何かを入力すると、テキストが「ぐらつく」ように見えます
func textViewDidChange(_ textView: UITextView) {
let newSize = textView.sizeThatFits(CGSize(width: 0, height: CGFloat.greatestFiniteMagnitude))
let newHeight = min(100, newSize.height)
textView.frame.size = CGSize(width: 0, height: newHeight)
if newHeight >= 100 {
textView.isScrollEnabled = true
textView.heightAnchor.constraint(equalToConstant: 100).isActive = true
} else {
textView.isScrollEnabled = false
textView.heightAnchor.constraint(equalToConstant: 100).isActive = false
}
}