スポンサーリンク

【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関連の記事を記載しています。是非参考にしてみて下さい。

本記事を読んでいただき感謝です。サイトを訪れていただいた方はプログラミング勉強中かと思いますのでプログラミング勉強のコツを合わせてご紹介。

スポンサーリンク
スポンサーリンク
スポンサーリンク

ブログに関しては500円程度かかりますが、それ以外は無料です。知識の吸収と並行してアウトプットは非常に効率が良いです。テックアカデミーに関しては講座レベルが高いにも関わらず、無料体験や人気口座も大幅値下げがあるので、重点的に学びたいものを無料体験してみてください。

転職時にも、エンジニアからテックアカデミー・Paizaは認知度が高いので、未経験入社採用を行う際履歴書で目に留まります。特にPaizaのスキルレベルA・SなどはIT業界でも評価されます。

テックアカデミー・Paizaの無料登録ができる期間中にぜひご利用してみてください。私も活用経験ありです。

Swift
スポンサーリンク
スポンサーリンク
ともぶろぐ

コメント

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