↓以前書いたこの記事では
【SwiftUI】TextfieldやText Editorで文字が入力されるごとに検知する方法。 - まだどこにもないアプリを作る
バインディングの変数が変わることを検知する
onChangeモディファイアを使うことで実装しましたが
TextfieldやTextEditorの文字の変数が
@ObservedObject変数の場合だとエラーが出てしまうので実装できません
その場合は以下の実装になります。
$task.nameはObservedObjectです。
まずCombineをインポートします。
import Combine
TextFieldの場合↓
TextField("enter the name", text: $task.name)
.onReceive(NotificationCenter.default.publisher(for: UITextField.textDidChangeNotification)){ obj in
print("UITextField.textDidChangeNotification")
}
TextEditorの場合↓
TextEditor(text: $task.name).frame(width: 300, height: 200)
.onReceive(NotificationCenter.default.publisher(for: UITextView.textDidChangeNotification)){ obj in
print("UITextView.textDidChangeNotification")
}
↓参考サイト様
これを実装してみてCombineというものがあることを知りました。
どっかのライブラリかと思ったらApple純正のフレームワークなんですね。
まだなに使うのかよくわからないけど
↓UIKITでの方法
swift textViewの文字を入力するごとに保存,セーブなど(予測変換にも対応) - まだどこにもないアプリを作る
キーワード ObservedObject 値変更 検知 How to detect ObservedObject value changes.