前提・実現したいこと
ご覧いただきありがとうございます。
文章量に応じてTextViewが伸びるUIを作りたくて、
LineのようなViewのなかにTextViewがあり改行するとViewとTextViewが伸びるようなUIの作り方を教えてください
訂正にありました通り、業務依頼のような質問をしてしまい申し訳ございません。
初学者ではありますが、お力を貸していただけたら幸いです。
発生している問題・エラーメッセージ
基本Storyboard上でUIを作成しTezxtViewを新たなViewから作りコードを書いていて、下記のCommonInitでエラーで落ちます。 記事通りに書いてオートレイアウトもGitからダウンロードしたのと同じにしました
該当のソースコード
swift
1import UIKit 2import RxCocoa 3import RxSwift 4 5 6 7 8class textViewInputView: UIView { 9 10 @IBOutlet weak var textViewInputHolder: UIView! 11 @IBOutlet weak var inputTextView: UITextView! 12 @IBOutlet weak var sendBtn: UIButton! 13 14 15 private let disposeBag = DisposeBag() 16 17 override init(frame: CGRect) { 18 super.init(frame: frame) 19 commonInit() 20 } 21 22 required init?(coder aDecoder: NSCoder) { 23 super.init(coder: aDecoder) 24 commonInit() 25 } 26 27 override func awakeFromNib() { 28 29 } 30 31 32 private func commonInit() { 33 let bundle = Bundle(for: type(of: self)) 34 let nib = UINib.init(nibName: "textViewInputView", bundle: bundle) 35 let view = nib.instantiate(withOwner: self, options: nil).first as! UIView 36 self.addSubview(view) 37 } 38}
ScrollViewの中にViewをのせその中にTextViewを置きTextViewが伸びてる風に作ろうと思い書いたコードです。
これはScrollViewを伸ばそうと思い書いたのですが,frameは変わらないので最初のScrollViewのサイズと変わらず、高さが変わらないままScrollViewだけスクロールできるようになりました。 contentSizeだけ変えているので当たり前なんですけど。。。
力不足ですみません。
swift
1 2 3func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool { 4 if text == "\n" { 5 self.scroll.contentSize = CGSize(width: self.scroll.frame.width, height: self.scroll.contentSize.height + 10) 6 } 7 return true 8 }
試したこと
ScrollViewを使いContentSizeを大きくしてみたり、NextGrowingTextViewというライブラリを使ってみた
https://qiita.com/k0uhashi/items/d00d043168eb0c4711c2 この記事を参考にコードを書いている
補足情報(FW/ツールのバージョンなど)
ios8以上に対応
swift4.2
回答1件
あなたの回答
tips
プレビュー