是否可以使用 SwiftUI 在 TextField 上设置字符限制?
Is it possible to set a character limit on a TextField using SwiftUI?
[已解决]
我正在使用一个可编码结构,它存储从 API 调用中检索到的对象值,所以我使用 Cenk Belgin 的示例修改了我的 TextField,我还删除了我添加的额外位,所以如果任何其他人都在尝试做同样的事情,那么他们就不会从我的应用程序中获得不需要的代码片段。
TextField("Product Code", text: $item.ProdCode)
.onReceive(item.ProdCode.publisher.collect()) {
self.item.ProdCode = String([=10=].prefix(5))
}
这是一种方法,不确定您提供的其他示例中是否提到了它:
@State var text = ""
var body: some View {
TextField("text", text: $text)
.onReceive(text.publisher.collect()) {
self.text = String([=10=].prefix(5))
}
}
text.publisher
将在输入时发布每个字符。将它们收集到一个数组中,然后只取前缀。
您也可以直接在文本域绑定中进行:
TextField("Text", text: Binding(get: {item.ProCode}, set: {item.ProCode = [=10=].prefix(5).trimmingCharacters(in: .whitespacesAndNewlines)}))
从 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))
}
})
适合我。
[已解决]
我正在使用一个可编码结构,它存储从 API 调用中检索到的对象值,所以我使用 Cenk Belgin 的示例修改了我的 TextField,我还删除了我添加的额外位,所以如果任何其他人都在尝试做同样的事情,那么他们就不会从我的应用程序中获得不需要的代码片段。
TextField("Product Code", text: $item.ProdCode)
.onReceive(item.ProdCode.publisher.collect()) {
self.item.ProdCode = String([=10=].prefix(5))
}
这是一种方法,不确定您提供的其他示例中是否提到了它:
@State var text = ""
var body: some View {
TextField("text", text: $text)
.onReceive(text.publisher.collect()) {
self.text = String([=10=].prefix(5))
}
}
text.publisher
将在输入时发布每个字符。将它们收集到一个数组中,然后只取前缀。
您也可以直接在文本域绑定中进行:
TextField("Text", text: Binding(get: {item.ProCode}, set: {item.ProCode = [=10=].prefix(5).trimmingCharacters(in: .whitespacesAndNewlines)}))
从 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))
}
})
适合我。