前提・実現したいこと
UITextViewを活用してTextFieldを作成したのですが、
そこに書かれたTextをFirestoreに格納したいです。
通常のやり方だと、格納されません。
どうしたら良いでしょうか、すいませんがご教示ください。
該当のソースコード
SwiftUI
1 2 3//作成した複数行のTextField 4struct MultiLineTextField: UIViewRepresentable { 5 @Binding var text: String 6 7 func makeCoordinator() -> Coordinator { 8 MultiLineTextField.Coordinator(parent1: self) 9 } 10 11 func makeUIView(context: Context) -> UITextView { 12 let textView = UITextView() 13 textView.delegate = context.coordinator 14 textView.isScrollEnabled = true 15 textView.isEditable = true 16 textView.isUserInteractionEnabled = true 17 textView.text = "xxx" 18 textView.textColor = UITraitCollection.current.userInterfaceStyle == .dark ? UIColor(displayP3Red: 0.4, green: 0.4, blue: 0.4, alpha: 1) : .lightGray 19 textView.font = .systemFont(ofSize: 17) 20 textView.backgroundColor = UITraitCollection.current.userInterfaceStyle == .dark ? UIColor(displayP3Red: 0.2, green: 0.2, blue: 0.2, alpha: 1) : UIColor(displayP3Red: 0.9, green: 0.9, blue: 0.9, alpha: 1) 21 return textView 22 } 23 24 func updateUIView(_ uiView: UITextView, context: Context) { 25 } 26 27 class Coordinator: NSObject, UITextViewDelegate { 28 var parent : MultiLineTextField 29 30 init(parent1: MultiLineTextField) { 31 parent = parent1 32 } 33 34 func textViewDidBeginEditing(_ textView: UITextView) { 35 if self.parent.text == "" { 36 textView.text = "" 37 textView.textColor = .black 38 } 39 } 40 41 internal func textViewDidEndEditing(_ textView: UITextView) { 42 if self.parent.text == "" { 43 textView.text = "xxx" 44 textView.textColor = UITraitCollection.current.userInterfaceStyle == .dark ? .darkGray : .lightGray 45 } 46 } 47 } 48} 49 50//firestoreへの格納時の処理、textがMultiLineTextFieldで取得した値 51db.collection("xxx").document("xxx").setData([..., "text": self.text,...]){(error) in 52 if error != nil{ 53 print((error?.localizedDescription)!) 54 return 55 } 56 } 57} 58
あなたの回答
tips
プレビュー