SwiftUI TextField最大长度

SwiftUI TextField最大长度,第1张

SwiftUI TextField最大长度

Paulw11的答案稍短一些:

class TextBindingManager: ObservableObject {    @Published var text = "" {        didSet { if text.count > characterLimit && oldValue.count <= characterLimit {     text = oldValue }        }    }    let characterLimit: Int    init(limit: Int = 5){        characterLimit = limit    }}struct ContentView: View {    @ObservedObject var textBindingManager = TextBindingManager(limit: 5)    var body: some View {        TextField("Placeholder", text: $textBindingManager.text)    }}

您只需要一个

ObservableObject
TextField字符串的包装即可。可以将其视为一个解释器,该解释器每次发生更改时都会得到通知,并且能够将修改发送回TextField。但是,无需
PassthroughSubject
使用
@Published
修饰符创建,只需较少的代码即可得到相同的结果。

提到一句,鉴于我们在不需要的时候覆盖了文本,因此您需要使用

didSet
,而不必使用,
willSet
否则可能会导致递归循环。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4885232.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-11
下一篇 2022-11-11

发表评论

登录后才能评论

评论列表(0条)

保存