SWIFTUI:防止在文本字段中按返回键时键盘关闭

Ten*_*t66 5 textfield ios swiftui

我在 SwiftUI 中使用 TextField。并按返回键键盘自行关闭。

有什么方法可以保持键盘向上并仍然保持 TextField 可编辑位置。

谢谢

Ivo*_*eko 1

有一种解决方法适用于 iOS 15+,但它仍然会创建键盘的弹跳动画。

如果您有多个文本字段,则可以将枚举@FocusState一起使用,而不是Bool

struct ContentView: View {
    @FocusState var focused: Bool
    @State var text: String = ""

    var body: some View {
        TextField("Text", text: $text)
            .focused($focused)
            .onSubmit {
                focused = true
            }
    }
}
Run Code Online (Sandbox Code Playgroud)

为了在不弹跳键盘的情况下获得更好的解决方案,我建议很棒的第三方库Introspect

import Introspect

class TextFieldKeyboardBehavior: UIView, UITextFieldDelegate {
    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        return false
    }
}

struct ContentView: View {
    @State var text: String = ""
    var textFieldKeyboardBehavior = TextFieldKeyboardBehavior()
    
    var body: some View {
        TextField("Text", text: $text)
            .introspectTextField { textField in
                textField.delegate = textFieldKeyboardBehavior
            }
    }
}
Run Code Online (Sandbox Code Playgroud)