SwiftUI 文本字段格式 onEditingChanged
Posted
技术标签:
【中文标题】SwiftUI 文本字段格式 onEditingChanged【英文标题】:SwiftUI Textfield format onEditingChanged 【发布时间】:2020-05-06 14:42:43 【问题描述】:我有一个格式化的 SiwftUI TextField,我希望它在编辑更改时格式化。这样做的正确方法是什么?
TextField("", value: $binding, formatter: $formatter,
onEditingChanged: (editingChanged) in
//How to force formatting here?
,
onCommit:
//Here formatting happens.
)
【问题讨论】:
不要使用构造函数的变体,而是使用SwiftUI TextField with formatter not working?中的代理绑定 【参考方案1】:当 TextField 的编辑模式发生变化时,会调用 OnEditing 闭包。所以当你开始编辑时它会被调用为 true ,当你结束时会被调用为 false (最后也会调用 onCommit ,除非你取消,但需要检查)。
我认为这不是你想要的。如果您想在用户更改 TextField 中的文本时进行格式化,请尝试以下操作:
TextField("text", text: $text).padding()
.onReceive(text.publisher) (c) in
print("Got \(c)")
self.text = self.text.uppercased()
但是,请记住,当您将格式应用于 $text 时,将发布新的格式化版本,从而触发第二次关闭调用。根据您想要的格式以及文本在其他地方的使用方式,这种双重调用可能会也可能不会成为问题。
【讨论】:
以上是关于SwiftUI 文本字段格式 onEditingChanged的主要内容,如果未能解决你的问题,请参考以下文章