【问题标题】:SwiftUI Textfield format onEditingChangedSwiftUI 文本字段格式 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


【解决方案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 时,将发布新的格式化版本,从而触发第二次关闭调用。根据您想要的格式以及文本在其他地方的使用方式,这种双重调用可能会也可能不会成为问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-25
    • 2019-11-23
    • 2021-11-14
    • 2021-10-09
    • 2021-01-06
    • 1970-01-01
    • 2021-02-18
    • 2020-12-20
    相关资源
    最近更新 更多