Eurekaで入力フォームを作成しているのですが、
TextRowで文字を入力する際に、最初に入力した値がもう一度入力されてしまう現象が起きています。詳しく説明すると、「あいうえお」と打とうとすると「ああいうえお」となってしまうということです。
何か改善策を知っている方がいればご意見お聞かせください。
ソースコードは下記となります。
import UIKit
import Eureka
class ViewController: FormViewController{
let userDefault = UserDefaults.standard override func viewWillAppear(_ animated: Bool) { if (userDefault.object(forKey: "Name") != nil){ print("データあり:\(userDefault.value(forKey: "Name"))") }else{ print("データなし") } } override func viewDidLoad() { super.viewDidLoad() form +++ Section("名前、性別") <<< TextRow("Name"){ $0.title = "名前" $0.placeholder = "ここに書いてね" if let Name:String = self.userDefault.object(forKey: "Name") as! String?{ $0.value = Name } $0.add(rule: RuleRequired()) $0.validationOptions = .validatesOnChange }.cellUpdate{ cell,row in if !row.isValid{ cell.titleLabel?.textColor = .red cell.textField.placeholder = "値を入力してください" } }.cellSetup { cell, row in cell.tintColor = .white } .onChange{row in self.userDefault.set(row.value, forKey: "Name") } func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } }
}
ソースコードの部分は ``` で括ると読みやすくなります。
「あいうえお」と打とうとすると「ああいうえお」となってしまうということです、という部分がわかりにくく、「あいうえお」と入力して確定すると、セルには「ああいうえお」と表示されるということですか?
コメントありがとうございます!もう少し詳しく説明すると、「あ」という文字を1回タップした状態では入力欄にはその通り出ているのですが、Doneを押したり、2文字目以降をタップすると(例:「あい」など...この場合「ああい」と入力される)そのような現象が起きます。何か単語を入れようとすると、その単語+単語の1文字目が勝手に頭部分に付加されるのです。分かっていることは単語全てを入力し確定してから付加されるのではなく、2文字目を入力すると付加されます。写真も追加しております。
回答2件
あなたの回答
tips
プレビュー