【问题标题】: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)}))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多