我在SwiftUI中使用TextField。按下回车键键盘就会自行关闭。
是否有任何方法可以保持键盘向上,并保持TextField的可编辑位置。
感谢
有一种变通方法适用于iOS 15+,但它仍然会创建键盘的弹跳动画。
如果您有多个文本字段,则可以将enum与@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
}
}
}
为了在不跳动键盘的情况下实现更好的解决方案,我建议使用伟大的第三方库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
}
}
}