Tôi đang cố gắng tìm ra cách làm cho kích thước UITextView phụ thuộc vào nội dung của nó trong SwiftUI. Tôi đã gói UITextView UIViewRepresentable
như sau:
struct TextView: UIViewRepresentable {
@Binding var showActionSheet: Bool
func makeCoordinator() -> Coordinator {
Coordinator(self)
}
func makeUIView(context: Context) -> UITextView {
let uiTextView = UITextView()
uiTextView.delegate = context.coordinator
uiTextView.font = UIFont(name: "HelveticaNeue", size: 15)
uiTextView.isScrollEnabled = true
uiTextView.isEditable = true
uiTextView.isUserInteractionEnabled = true
uiTextView.backgroundColor = UIColor(white: 0.0, alpha: 0.05)
uiTextView.isEditable = false
return uiTextView
}
func updateUIView(_ uiView: UITextView, context: Context) {
uiView.attributedText = prepareText(question: question)
var frame = uiView.frame
frame.size.height = uiView.contentSize.height
uiView.frame = frame
}
func prepareText(text: string) -> NSMutableAttributedString {
...................
return attributedText
}
class Coordinator : NSObject, UITextViewDelegate {
var parent: TextView
init(_ view: TextView) {
self.parent = view
}
func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange) -> Bool {
parent.showActionSheet = true
return false
}
}
}
Hơn nữa, tôi đã cố gắng thay đổi kích thước khung hình trong updateUIView dựa trên kích thước nội dung của nó, nhưng nó không có tác dụng gì. Tôi cho rằng ở giai đoạn này, khung nhìn thậm chí không được bố trí và khung của nó đang bị ghi đè ở một nơi khác. Tôi thực sự sẽ đánh giá cao nếu ai đó có thể chỉ cho tôi một hướng chính xác.