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