gpt4 book ai didi

SwiftUI - 展开 TextField 以填充 View

转载 作者:行者123 更新时间:2023-12-04 15:39:01 25 4
gpt4 key购买 nike

我正在尝试创建一个横跨整个窗口的 TextField。目前它只会扩展以填充水平轴上的 View 。我的目标是实现与在 TextEdit 中看到的类似的东西。

到目前为止,这是我的代码:

struct ContentView: View {
@State var contents: String = "Hello World\nThis is a test.";

var body: some View {
VStack() {
TextField("Notes", text: $contents)
.lineLimit(nil)
}
.frame(height: 600)
}
}

Application Screenshot

这在 SwiftUI 中可行吗?还是我需要恢复使用旧版 AppKit 组件?

最佳答案

我发现包装 NSTextView 仍然是实现类似于在 TextEdit 中看到的效果的最佳方式。所以是的,至少现在您必须在 SwiftUI 代码中使用遗留的 AppKit 组件。

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)
}
}

关于SwiftUI - 展开 TextField 以填充 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58654914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com