在SwiftUI中重新加载Textfield键盘 [英] Reload TextField keyboard in SwiftUI
本文介绍了在SwiftUI中重新加载Textfield键盘的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
TextField
的键盘类型。也就是说,我有这样的东西:
struct ContentView: View {
@Binding var keyboardType: UIKeyboardType
@State var searchText = ""
var body: some View {
TextField("placeholder", text: $searchText).keyboardType(keyboardType)
}
}
现在,我希望根据keyboardType
是什么,动态地将键盘从一种键盘样式更改为另一种键盘样式。然而,我发现的是keyboardType
变化了,但软键盘没有变化。相反,键盘保持不变,只有在我关闭键盘并重新启动后,它才会显示一些不同的东西。
我看到有一个way to wrap UITextField
,所以键盘会动态更新。但我想知道/希望在SwiftUI中有一种方法可以做到这一点。也许有办法访问UITextView
的reloadInputViews()
方法?如果有任何帮助,我们将不胜感激。
推荐答案
您可以使用@FocusState
-禁用焦点,更换键盘,然后再次聚焦:
struct ContentView: View {
@State var mykeyboard = UIKeyboardType.numberPad
@State var searchText = ""
@FocusState var focus: Bool
var body: some View {
VStack {
Divider()
HStack {
TextField("placeholder", text: $searchText)
.keyboardType(mykeyboard)
.focused($focus)
Button("Submit") {
focus = false
}
}
Divider()
HStack {
Button("Numbers") {
focus = false
mykeyboard = .numberPad
focus = true
}
Button("EMail") {
focus = false
mykeyboard = .emailAddress
focus = true
}.padding()
Button("Alphabet") {
focus = false
mykeyboard = .alphabet
focus = true
}
}
}
.padding()
.buttonStyle(.bordered)
}
}
这篇关于在SwiftUI中重新加载Textfield键盘的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文