以下の様にUIViewRepresentableを使ってUITextViewをラップしてSwiftUI上で使える様にしました。
SwiftUI
1struct CustomTextView: UIViewRepresentable { 2 3 func makeUIView(context: UIViewRepresentableContext<CustomTextView>) -> UITextView { 4 let textView = UITextView() 5 textView.backgroundColor = UIColor.clear 6 textView.isScrollEnabled = false 7 textView.textColor = UIColor.black 8 textView.font = UIFont(name: "ArialMT", size: 20) 9// textView.text = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" 10 return textView 11 } 12 13 func updateUIView(_ uiView: UITextView, context: Context) { 14 15 } 16} 17 18 19extension UIApplication { 20 func closeKeyboard() { 21 sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil) 22 } 23} 24
上記がCustomTextView
以下の様に使っています。
SwiftUI
1import SwiftUI 2 3struct ContentView: View { 4 5 var body: some View { 6 7 ZStack { 8 CustomTextView() 9 .frame(width:300, height: 300, alignment: .topLeading) 10 .border(Color.red, width: 1) 11 12 }.onTapGesture { 13 UIApplication.shared.closeKeyboard() 14 } 15 16 } 17}
これでキーボードから値を入力した場合、以下の様に赤枠のframeで折り返してくれます。
しかし上記CustomTextViewのコメントアウトを外して直接textView.textに文字列を入れると以下の様に枠をはみ出してしまいます。
![
直接文字を入力した場合も枠で改行される様にしたいです。
分かる方、ご回答いただければ幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。