【Swift】UITextViewに文字数制限と行数制限を加える方法

この記事ではUITextViewに文字数制限と行数制限を加える方法を書いていきます。

この記事ではUITextViewに以下の制限を加えていきます。

  1. 最大文字数55文字
  2. 最大行数3行

基本的には文字数制限だけで十分な場合が多いと思うのですが、極端な話、それだけですと最大文字数の数だけ改行が出来てしまいます。最終的に出力するUILabelの高さを揃えたい時などに行数制限は役立つかもしれません。

以下、完成イメージです。

 

それでは早速Viewの準備から入ります。

1. 準備

用意するのは

  1. 残り文字数を表示するためのUILabel(wordCountLabel)
  2. 最大文字数を表示するためのUILabel
  3. テキスト入力用のUITextView(textView)

①と③は対応するViewControllerにoutletとして紐付けます。

storybordは↓のようになっています。

2. UITextViewに文字数制限を加える

2-1.文字数制限 

文字数制限にはUITextViewのdelegate methodの一つ、shouldChangeTextIn rangeを使います。textViewのdelegateを対応するViewControllerに渡し、以下を加えます。

2-2.残り文字カウント

なんの表記もなくいきなり入力出来なくなったらユーザー体験的にもよくないので、残り文字カウントも付け足します。

2-3.プレイスホルダー

UITextViewにはUITextFieldみたいにplaceholderが無いので自前で用意します。

現状ViewControllerは以下のようになっています。

3. UITextViewに行数制限を加える

まずは文字数制限が無い状態で行数制限を加え、あとで2つを組み合わせます。行数制限ではshouldChangeTextIn rangeを以下のようにします。

4. 全てを組み合わせる

文字数制限と行数制限を合わせると以下のようになります。

最終的にViewControllerは以下のようになっています。

以上、UITextViewに文字数制限と行数制限を加える方法でした。

参考URL