【问题标题】:SwiftUI Textfields and IntsSwiftUI 文本字段和整数
【发布时间】:2021-02-18 12:30:16
【问题描述】:

我今天开始使用 SwiftUI,我想编写一个小型计算器。因此,我想要一个用户可以写数字的文本字段。但是通常的文本字段只接受字符串 我该怎么办?

【问题讨论】:

  • 您是在问如何将字符串转换为 Int?因为“通常的文本字段”也接受数字,只是作为字符串,而不是 int。例如,您需要通过 Int(myString) 将字符串转换为 int。

标签: swiftui


【解决方案1】:

如果您想强制TextField 键盘为数字,只需执行以下操作:

TextField("Input", text: $input)
    .keyboardType(.decimalPad)

其中keyboardTypeUIKeyboardType

【讨论】:

  • 您仍然可以使用此解决方案粘贴一些文本。
【解决方案2】:

使用 SwiftUI 2.0,您可以使用如下内容:

struct ContentView: View {
@State var theInt: Int?
@State var text = ""

var body: some View {
    VStack {
        TextField("enter a number", text: $text)
            .onChange(of: text) {
              let txt = $0.filter { "-0123456789".contains($0) }
              if allowed(txt) {
                 theInt = Int(txt)
                 text = txt
              } else {
                text = String(txt.dropLast())
              }
            }
    }
}

func allowed(_ str: String) -> Bool {
    let num = str.starts(with: "-") ? String(str.dropFirst()) : str
    return CharacterSet.decimalDigits.isSuperset(of: CharacterSet(charactersIn: num))
}
}

【讨论】:

    猜你喜欢
    • 2019-11-23
    • 2021-11-14
    • 2021-10-09
    • 2021-01-06
    • 1970-01-01
    • 2020-12-20
    • 2020-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多