まだどこにもないアプリを作る

アプリ開発でつまづいたところなどを中心に記事にして行きます。

【SwiftUI】TextField TextEditorで文字を打つごとに検知2

↓以前書いたこの記事では

【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")

                                }

 

 

↓参考サイト様

www.choge-blog.com

 

 

これを実装してみてCombineというものがあることを知りました。

どっかのライブラリかと思ったらApple純正のフレームワークなんですね。

まだなに使うのかよくわからないけど

 

 

 

↓UIKITでの方法

swift textViewの文字を入力するごとに保存,セーブなど(予測変換にも対応) - まだどこにもないアプリを作る

 

キーワード ObservedObject 値変更 検知 How to detect ObservedObject value changes.