【问题标题】:Is it possible to set a character limit on a TextField using SwiftUI?是否可以使用 SwiftUI 在 TextField 上设置字符限制?
【发布时间】:2020-05-06 14:07:20
【问题描述】:
[已解决]
我正在使用一个可编码的结构来存储从 API 调用中检索到的对象值,因此我使用 Cenk Belgin 的示例修改了我的 TextField,我还删除了我添加的额外位,因此如果其他人想要这样做同样的事情,他们就不会从我的应用程序中获得不需要的代码。
TextField("Product Code", text: $item.ProdCode)
.onReceive(item.ProdCode.publisher.collect()) {
self.item.ProdCode = String($0.prefix(5))
}
【问题讨论】:
标签:
swiftui
textfield
swift5
maxlength
character-limit
【解决方案1】:
这是一种方法,不确定您给出的其他示例中是否提到过:
@State var text = ""
var body: some View {
TextField("text", text: $text)
.onReceive(text.publisher.collect()) {
self.text = String($0.prefix(5))
}
}
text.publisher 将在输入每个字符时发布它。将它们收集到一个数组中,然后只取前缀。
【解决方案2】:
从 iOS 14 开始,您可以将 onChange 修饰符添加到 TextField 并像这样使用它:
TextField("Some Placeholder", text: self.$someValue)
.onChange(of: self.someValue, perform: { value in
if value.count > 10 {
self.someValue = String(value.prefix(10))
}
})
对我来说很好。
【解决方案3】:
你也可以直接在Textfield绑定中做:
TextField("Text", text: Binding(get: {item.ProCode}, set: {item.ProCode = $0.prefix(5).trimmingCharacters(in: .whitespacesAndNewlines)}))