Я обнаружил, что упаковка NSTextView по-прежнему является лучшим способом достижения чего-то похожего на то, что можно увидеть в TextEdit. Так что да, по крайней мере, теперь вам придется использовать устаревшие компоненты AppKit в вашем коде SwiftUI.
struct MultilineTextView: NSViewRepresentable {
typealias NSViewType = NSTextView
@Binding var text: String
func makeNSView(context: Self.Context) -> Self.NSViewType{
let view = NSTextView()
view.isEditable = true
view.isRulerVisible = true
return view
}
func updateNSView(_ nsView: Self.NSViewType, context: Self.Context) {
nsView.string = text
}
}
struct ContentView: View {
@State var contents: String = "Hello World\nThis is a test.";
var body: some View {
VStack() {
MultilineTextView(text: $contents)
}.background(Color.white)
}
}