見出し画像

【Swift】TextFieldでn文字目が入力された時に-を挿入し、文字数制限を設ける。

//    func textFieldDidChangeSelection(_ textField: UITextField) {
//        if (textField.text?.count == 6) {
//            textField.text = (textField.text)! + "-"
//        }
//    }

このようにTextFieldDelegateのtextFieldDidChangeSelection(:)を利用して上記のような書き方をするとbackで文字を消すことができません。

下記仕様を実現したいのです。
・TextFieldで6文字、13文字目を入力した際にハイフンを自動追加する。
・文字数制限は6-6-6にする。

画像1

class CreateViewController: UIViewController, UITextFieldDelegate {
    @IBOutlet weak var deckCodeLabel: UITextField!
    // 省略
    
     override func viewDidLoad() {
       super.viewDidLoad()
       deckCodeLabel.delegate = self
       // Do any additional setup after loading the view.
   }
   
   



    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
       if (string == "") { return true }
       if (textField.text?.count == 5 || textField.text?.count == 12) {
           textField.text = (textField.text)! + string + "-"
           return false
       }

       textField.text = String(textField.text!.prefix(19))
       return true
   }
   
   
  これでOKです

この記事が気に入ったらサポートをしてみませんか?