我想用来.submitLabel将“返回”键更改为其他键(即.done),但它似乎不适用于 TextEditor 输入表单。是应该的吗?
示例代码:
struct ContentView: View {
@State var text: String = ""
var body: some View {
Form {
TextEditor(text: $text)
.submitLabel(.search)
}
}
}
Run Code Online (Sandbox Code Playgroud)
好的,根据我的尝试,.submitLabel(...)文本编辑器不起作用。有一个可能的解决方案,您可以将 aText(...)作为子视图添加到 中TextEditor(...),但这非常糟糕,我不建议这样做。然而,我为 iOS 13 找到了一个解决方案,其功能似乎与 TextEditor 的工作方式完全相同,那就是使用UIViewRepresentable. 值得庆幸的是,它很容易实现。创建这个结构体。
struct TextView: UIViewRepresentable {
typealias UIViewType = UITextView
var configuration = { (view: UIViewType) in }
func makeUIView(context: UIViewRepresentableContext<Self>) -> UIViewType {
UIViewType()
}
func updateUIView(_ uiView: UIViewType, context: UIViewRepresentableContext<Self>) {
configuration(uiView)
}
}
Run Code Online (Sandbox Code Playgroud)
然后使用该视图,就像使用TextView()分配其属性的位置一样。这实际上是拉动UIKittextView 的版本,因此它的属性将是相同的。此时您可以喜欢它并混合 SwiftUI 和 UIKit 属性和修饰符。
TextView { view in
view.text = sampleText
view.returnKeyType = .done
}
Run Code Online (Sandbox Code Playgroud)