実現したいこと
UItextViewで3行までしか入力を出来ないない様にしたいです
今考えている実現方法は
func textViewDidChange(_ textView: UITextView){ 現在の行数の取得する if 現在の行数>3 { キーボードの入力を不可にする } }
と考え
現在の行数の取得方法
キーボードの入力を不可にする方法
を調べましたがわかりませんでした
質問
上記の方法が正しければ実現するコードはどの様になるでしょうか?
また上記の方法で実現出来なければどのようなコードで実現できるでしょうか?
余談かもしれませんが試した事として
message.textContainer.maximumNumberOfLines = 3 message.textContainer.lineBreakMode = .byTruncatingTail
は、表示は3行になりましたが表示されていないだけで実際には文字は入力された状態になっていて自分が実現したいところはではいけませんでした
行数は物理行ですか?論理行ですか?
とりあえず方針だけ。
textView(_:shouldChangeTextIn:replacementText:)
https://developer.apple.com/documentation/uikit/uitextviewdelegate/1618630-textview
これを使って、三行を超えるようなら false を返せばいいです。

閲覧ありがとうございます
画面に表示されている見た目そのままの行数です。
(今自分が調べた範囲ではこれを物理行と言っているサイトと逆もあったのでどっちか答えられず↑の表現になりましたすいません)
方針ありがとうございます。リンクと他サイトで調べましたがまだ正解のコードがまだ解からない状態です、よろしくお願いします
https://teratail.com/questions/73665
今回の場合は「文脈2」になるので物理行ですね。
やることは二つです。
(a) 制限に引っかかったら入力出来なくする
(b) 「三行を超える」の判定をする
(a)は上記のデリゲートメソッドを使用します。
(b)は面倒くさそう?(文字数制限ならよく見かけますが)

やる事は理解しました
入力出来なくする方法は
textField.resignFirstResponder() でも良いですが
閉じずにキーを押しても反応しなくなる方法があればそちらを利用したいと考えています
文字数制限は私もよく見かけたのですが行数の制限の情報はあまり見かけられず公式を理解できないレベルの自分はつまずてしまいました。
(b)の参考コードを書いて頂くことはかなりご負担をおかけしてしまうレベルでしたでしょか?

回答1件
あなたの回答
tips
プレビュー