SwiftUI文本字段和整数

SwiftUI文本字段和整数,swiftui,Swiftui,我今天开始使用SwiftUI,我想编写一个小计算器。因此,我需要一个文本字段,用户可以在其中写入数字。但是通常的文本字段只接受字符串 我能做什么?如果要强制文本字段键盘为数字,只需执行以下操作: TextField("Input", text: $input) .keyboardType(.decimalPad) 如果键盘类型是一个。使用SwiftUI 2.0,您可以使用以下内容: struct ContentView: View { @State var theI

我今天开始使用SwiftUI,我想编写一个小计算器。因此,我需要一个文本字段,用户可以在其中写入数字。但是通常的文本字段只接受字符串
我能做什么?

如果要强制
文本字段
键盘为数字,只需执行以下操作:

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

如果
键盘类型是一个。

使用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))
}
}

您是在问如何将字符串转换为Int吗?因为“常用文本字段”也接受数字,就像字符串一样,而不是int。例如,您需要通过
int(myString)
将字符串转换为int。这是否回答了您的问题?您仍然可以使用此解决方案粘贴一些文本。