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

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

swift textViewの文字を入力するごとに保存,セーブなど(予測変換にも対応)

www.hfoasi8fje3.work

 

textViewの文字を入力した時を検知してその度にuserDefaultsなどで保存します。

textFieldの場合は上記の参考サイト様でできるのですがtextViewの場合はaddtargetがtextViewにはつけられなかった?ので

 

とりあえずの対応をします

UITextViewDelegateを追加して

class DetailViewController: UIViewController,UITextViewDelegate{

これもViewDidLoadの中とかに追加

textView.delegate = self

 

    

//MARK: textView文字打つごと呼ばれる

    func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {

        print("文字打った")

        DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {

            text = self.textView.text!

           UserDefaults.standard.set(text, forKey: "text")

        }

        

        return true

    }

 

DispatchQueueを使わないと予測変換などには対応できなくなってしまいます。

 

なんかこんな感じにDispatchQueue.main.asyncAfterで処理を遅らせると

よくわからないがいい感じ予測変換も保存してくれる

 

 

参考程度に

試してみてください。