スポンサーリンク

【Swift】textfieldで文字数制限を行う方法ご紹介。

Swift
スポンサーリンク

今回の記事はSwiftのtextfieldで文字数制限を行う方法に関してご紹介します。初心者にも分かりやすく簡単に記載していくので是非参考にして下さい。

スポンサーリンク

Swiftでtextfieldを使う

Swiftでtextfieldでを使う方法は下記記事で詳しく設定しています。今回の文字数制限に関してはtextfieldの設置とoutlet接続、文字数制限の処理の記述が必要になってきます。下記を参考にして下さい。

【Swift】textfieldの使い方ご紹介。〜 初心者向け 〜

textfieldで文字数制限

では文字数制限に関してみていきましょう。

文字制限に関しては2通りのやり方があります。一つは文字を記入した後リターンや改行を押した後に文字制限処理を行う方法。もう一つが文字を書き換えた後の決定(平仮名から漢字に変換終了)の際に文字制限を行う方法があります。順番に見ていきましょう。

textfieldにdelegateを設定

まずは下記のようにdelegateを設定する必要があるため記述を変更します。まず、classに下記のような記述で「UITextFieldDelegate」を追加します。

class ViewController: UIViewController,UITextFieldDelegate {
    
    //outlet接続したtextfield
    @IBOutlet weak var testtext: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()
        testtext.delegate = self
    }
}

これでtextfieldのdelegateが追加されました。ちなみにdelagateとは何かというと簡単にいうと「処理を行う際に連結して処理が自動的に行われる仕組みのこと」です。下記に解説記事を用意しているので気になる方は参考にしてみて下さい。

【Swift】delegateの使い方ご紹介。

今回の記事ではわかっていなくとも本質の部分は問題なく理解できます。

では先ほど追加したdelageteを使用して後続処理で文字数を制限していきます。

リターンや改行の後に文字数制限

class ViewController: UIViewController,UITextFieldDelegate {
    
    //outlet接続したtextfield
    @IBOutlet weak var testtext: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()
        testtext.delegate = self
    }

    //テキストフィールドでリターンが押されたときに通知され起動するメソッド
    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        textField.resignFirstResponder()
        if let text = textField.text {
            if textField.markedTextRange == nil && text.count > 8 {
                textField.text = text.prefix(8).description
            }
        }
        return true
    }
}

文字を書き換えた後に文字制限

class ViewController: UIViewController,UITextFieldDelegate {
    
    //outlet接続したtextfield
    @IBOutlet weak var testtext: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()
        testtext.delegate = self
        NotificationCenter.default.addObserver(
            self,
            selector: #selector(textFieldDidChange(notification:)),
            name: UITextField.textDidChangeNotification,
            object: testtext)
    }
    deinit {
            NotificationCenter.default.removeObserver(self)
        }

        // 入力チェック(文字数チェック)処理
        @objc func textFieldDidChange(notification: NSNotification) {
            let textField = notification.object as! UITextField

            if let text = textField.text {
                if textField.markedTextRange == nil && text.count > 8 {
                    textField.text = text.prefix(8).description
                }
            }
        }
}

自身のアプリにあった方を使って見ましょう。では今回の記事は以上です。他にも多数のSwift関連の記事を記載しています。是非参考にしてみて下さい。

おすすめ情報ご紹介。

下記リンクよりU-NEXTの契約をすると31日間無料でU-NEXTの全動画約21万作品を見放題です。31日期間に解約すれば0円です。今だけのおすすめ情報なのでまだ登録していない人は是非!

スポンサーリンク
Swift
スポンサーリンク
シェアする
スポンサーリンク
SunnyDayTravel-Blog

コメント

タイトルとURLをコピーしました