是否可以使用 SwiftUI 在 TextField 上设置字符限制?
Posted
技术标签:
【中文标题】是否可以使用 SwiftUI 在 TextField 上设置字符限制?【英文标题】:Is it possible to set a character limit on a TextField using SwiftUI? 【发布时间】: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))
【问题讨论】:
【参考方案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)))
【讨论】:
以上是关于是否可以使用 SwiftUI 在 TextField 上设置字符限制?的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI如何让绑定到同一个状态的多个TextField呈现出不同输入行为
SwiftUI如何让绑定到同一个状态的多个TextField呈现出不同输入行为