Swift

【Swift】TextFieldやTextViewの値が変更されるたびに処理を行う

TextFieldやTextViewの値が更新されるたびにメソッドを呼ぶ方法を解説していきます。

TextField

「TextField」の場合は「TextField.addTarget」で、行いたい処理を呼び出します。

「for: .editingChanged」とすると、値が変わるたびに処理を行います。

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var textField: UITextField!
    override func viewDidLoad() {
        super.viewDidLoad()
        textField.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged)
    }

    @objc func textFieldDidChange(_ textField: UITextField) {
        if let text = textField.text {
            print(text)
        }
    }

}

TextView

「TextView」の場合は「Delegate」で「TextViewDidChange」を追加するだけです。

「UITextViewDelegate」を継承し、「textView.delegate」に「self」を代入します。

import UIKit

class ViewController: UIViewController, UITextViewDelegate {
    @IBOutlet weak var textView: UITextView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        textView.delegate = self
    }

    func textViewDidChange(_ textView: UITextView) {
        if let text = textView.text {
            print(text)
        }
    }
    
}

これで「TextField」や「TextView」の文字の変更を常に確認できます。「TextField」には「textFieldDidChange」のデリゲートメソッドがなく、「TextView」には「addTarget」がありません。