SwiftUI - 使用 axis 创建多行文本字段:.vertical 和 onSubmit 现在不起作用

15 swift swiftui

所以基本上我创建了一个多行文本字段,但是按 onSubmit 根本不起作用,我宁愿在双击 return 或类似的东西时提交。如果有一种方法可以避免提交时键盘折叠而不是使用多行,我将很感激被告知如何:)

小智 12

这是我使用过的解决方法:

struct SwiftUIView: View {
    
    @State var text: String = ""
    
    var body: some View {
        TextField("text", text: $text, axis: .vertical)
            .frame(width: 200, height: 200)
            .multilineTextAlignment(.leading)
            .textFieldStyle(.roundedBorder)
            .font(.title)
            .onChange(of: text) { newValue in
                guard let newValueLastChar = newValue.last else { return }
                if newValueLastChar == "\n" {
                    text.removeLast()
                    hideKeyboard()
                }
            }
    }
}
Run Code Online (Sandbox Code Playgroud)

hideKeyboard 是 View 扩展中定义的函数:

extension View {
    func hideKeyboard() {
        UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)
    }
}
Run Code Online (Sandbox Code Playgroud)