如何解决SwiftUI:从 UIKit 扩展的 TextView 不会按预期更新 @State var
我想扩展我的 SwiftUI 应用程序,以便我可以使用 UIKit 中的 TextView,因为它目前在 SwiftUI 中不可用,所以我从 Stackoverflow 复制了这段代码:
import Foundation
import SwiftUI
import UIKit
struct EditableTextView: UIViewRepresentable {
@Binding var text: String
@Binding var textStyle: UIFont.TextStyle
func makeUIView(context: Context) -> UITextView {
let textView = UITextView()
textView.font = UIFont.preferredFont(forTextStyle: textStyle)
textView.autocapitalizationType = .sentences
textView.isSelectable = true
textView.isUserInteractionEnabled = true
return textView
}
func updateUIView(_ uiView: UITextView,context: Context) {
uiView.text = text
uiView.font = UIFont.preferredFont(forTextStyle: textStyle)
}
}
我就是这样使用它的:
struct ConvertView: View {
@State var userText: String = ""
@State private var textStyle = UIFont.TextStyle.body
var body: some View {
//...
EditableTextView(text: $userText,textStyle: $textStyle)
//...
}
}
结果是一个 textView 看起来就像 UIKit 中的那个。
我假设每当用户在此 textView 中写入内容时,文本都会保存到 userText
。但这不会发生。为什么?
我发现 updateUIView
实际上不会在用户每次在 textView 中写入内容时被调用。发生的事情对我来说很有意义,但我不知道如何解决。 我只想在用户按下按钮时获取 textView 中的文本,而不是更多。
感谢您的回答。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。