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」がありません。