我想在TextField
中截获键盘输入事件,即当用户键入";咖啡";,我希望它能触发6个事件:
- C
- o
- f
- f
- e
- e
在SwiftUI中有办法做到这一点吗?
我在TextField
上尝试了onChange
修饰符,如下所示:
TextField("key", text: $string)
.onChange(of: string) { newValue in
print("(newValue)")
}
但有时只有当我打字很快时,它才会在按下多个键后才会启动,例如,我可能会得到以下更新:
- C
- Coff💥
- Coffe
- 咖啡
有没有一种方法可以让键入的键作为一个输入流一次传递一个键?
您可以使用以下方法一次交付一个密钥:
TextField("key", text: $string)
.onReceive(string.publisher.last()) { val in
print("val: (val)")
}
编辑
"。。。。有没有办法登记退格键按下&";,尝试以下简单的扩展:
struct ContentView: View {
@State var string = ""
@State var prevString = ""
var body: some View {
TextField("key", text: $string).border(.red)
.onReceive(string.publisher.last()) { val in
if string.count < prevString.count {
print("backspace pressed, do something clever here")
} else {
print("val: (val)")
}
prevString = string
}
}
}