繁体   English   中英

是否可以使用 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($0.prefix(5))
}

这是一种方法,不确定您提供的其他示例中是否提到了它:

@State var text = ""

  var body: some View {
    TextField("text", text: $text)
      .onReceive(text.publisher.collect()) {
        self.text = String($0.prefix(5))
    }
  }

text.publisher将在输入时发布每个字符。 将它们收集到一个数组中,然后只取前缀。

从 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))
      }
  })

对我来说很好用。

您也可以直接在 Textfield 绑定中执行此操作:

TextField("Text", text: Binding(get: {item.ProCode}, set: {item.ProCode = $0.prefix(5).trimmingCharacters(in: .whitespacesAndNewlines)}))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM