Swift UITextView中的值不为';t使用用户输入进行更新

Swift UITextView中的值不为';t使用用户输入进行更新,swift,swiftui,Swift,Swiftui,基于中@Tomas的两个答案,我编写了以下代码以将用户输入呈现为HTML。HTMLStringView方法工作正常,但是HTMLText在fullText更改时不会更新 我有两个问题: (1) 为什么HTMLStringView方法正常工作(即始终与用户输入同步) (2) 为什么HTMLText会失败?我该怎么修 下面是代码 导入快捷界面 结构测试:视图{ @国家私有变量占位符字符串:String=“在此处插入” @国家私有变量全文:String=“” var body:一些观点{ VSta

基于中@Tomas的两个答案,我编写了以下代码以将用户输入呈现为HTML。
HTMLStringView
方法工作正常,但是
HTMLText
fullText
更改时不会更新

我有两个问题:

(1) 为什么
HTMLStringView
方法正常工作(即始终与用户输入同步)

(2) 为什么
HTMLText
会失败?我该怎么修


下面是代码

导入快捷界面
结构测试:视图{
@国家私有变量占位符字符串:String=“在此处插入”
@国家私有变量全文:String=“”
var body:一些观点{
VStack{
ZStack(对齐:。顶部){
如果fullText.i为空{
文本编辑器(文本:$placeholder字符串)
.padding(.top,20)
}
文本编辑器(文本:$fullText)
.padding(.top,20)
.自动资本化(.none)
.不透明度(fullText.isEmpty?0.5:1)
}
HTMLText(html:“”

//不更新
\(全文)

""") HTMLStringView(htmlContent:“” MathJax示例 MathJax={ 特克斯:{ inlineMath:[['$','$'],['\\(','\\)']], 标签:“ams” }, svg:{ fontCache:“全局” } }; \(全文.replacingOccurrences(of:“\n\n”,with:“
”)

""") } } } 结构测试预览:PreviewProvider{ 静态var预览:一些视图{ 测试() } }
以下是
HTMLText.swift
HTMLStringView.swift

//将html转换为属性字符串并显示在UITextView中
导入快捷键
结构HTMLText:UIViewRepresentable{
让html:String
func makeUIView(上下文:UIViewRepresentableContext)->UITextView{
let view=UITextView()
DispatchQueue.main.async{
让数据=数据(self.html.utf8)
如果让attributedString=try?NSAttributedString(数据:数据,选项:[.documentType:NSAttributedString.documentType.html],documentAttributes:nil){
//view.attributedText=attributedString
view.textStorage.append(AttributeString)
}
}
返回视图
}
func updateUIView(uiView:UITextView,context:context){}
}
//直接呈现html
导入WebKit
导入快捷键
结构HTMLStringView:UIViewRepresentable{
让htmlContent:String
func makeUIView(上下文:context)->WKWebView{
返回WKWebView()
}
func updateUIView(uiView:WKWebView,context:context){
uiView.loadHTMLString(htmlContent,baseURL:nil)
}
}

您必须像这样更新
updateUIView
中文本视图的文本

func updateUIView(_ uiView: UITextView, context: Context) {
    uiView.text = html
}

您必须在
updateUIView
中更新文本视图的文本,如下所示

func updateUIView(_ uiView: UITextView, context: Context) {
    uiView.text = html
}