【Swift】一定数の文字を打つと、自動的に次のTextFieldに移行する方法


どうも、しゅんやです。

例えばSNSを始める時などに、まあ個人情報を入力する事がよくあると思います。

その時にね、なんか例えば電話番号とかを打つ時に、最初の3文字を打った途端、勝手に次の入力欄に移ってくれたみたいな事があると思います。

あれ、入力する側としては楽ですよね。

なので今回は、それを実装するわけです。

ではいきましょう!

①まずは下準備

こんな感じで、TextFieldを3つ用意して、その間に線(UILabel)を入れて、まあ電話番号の入力するときのやつっぽいのを作ってください。

んで、TextFieldだけコードに繋ぎましょう。

②ではコード書きます

めっちゃ簡単です。

次のコードを書くだけです。

         
import UIKit

class ViewController: UIViewController {

    //StoryBoardと繋いだTextField達
    @IBOutlet weak var textField : UITextField!
    @IBOutlet weak var textField2: UITextField!
    @IBOutlet weak var textField3: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()
        //監視
        NotificationCenter.default.addObserver(self, selector: ♯selector(textFieldDidChange(_:)), name: UITextField.textDidChangeNotification, object: nil)
        NotificationCenter.default.addObserver(self, selector: ♯selector(textFieldDidChange2(_:)), name: UITextField.textDidChangeNotification, object: nil)
        NotificationCenter.default.addObserver(self, selector: ♯selector(textFieldDidChange3(_:)), name: UITextField.textDidChangeNotification, object: nil)

    }

    @objc func textFieldDidChange(_ notification:NSNotification){
        //最初のTextFieldの文字数が3だったら
        if textField.text!.count == 3{
            textField.resignFirstResponder()//閉じる
            textField2.becomeFirstResponder()//ここで次に移行
        } 
     }
    @objc func textFieldDidChange2(_ notification:NSNotification){
        //2つ目のTextFieldの文字数が4だったら
        if textField2.text!.count == 4{
            textField2.resignFirstResponder()//閉じる
            textField3.becomeFirstResponder()//次に移行
        }
     }
    @objc func textFieldDidChange3(_ notification:NSNotification){
        //最後のTextFieldの文字数が4だったら
        if textField3.text!.count == 4{
            textField3.resignFirstResponder()//閉じる
            print("終了!")
        }
   }
 }


ではさよなら!!!