【发布时间】:2021-02-18 12:30:16
【问题描述】:
我今天开始使用 SwiftUI,我想编写一个小型计算器。因此,我想要一个用户可以写数字的文本字段。但是通常的文本字段只接受字符串 我该怎么办?
【问题讨论】:
-
您是在问如何将字符串转换为 Int?因为“通常的文本字段”也接受数字,只是作为字符串,而不是 int。例如,您需要通过
Int(myString)将字符串转换为 int。
标签: swiftui
我今天开始使用 SwiftUI,我想编写一个小型计算器。因此,我想要一个用户可以写数字的文本字段。但是通常的文本字段只接受字符串 我该怎么办?
【问题讨论】:
Int(myString) 将字符串转换为 int。
标签: swiftui
如果您想强制TextField 键盘为数字,只需执行以下操作:
TextField("Input", text: $input)
.keyboardType(.decimalPad)
其中keyboardType 是UIKeyboardType。
【讨论】:
使用 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))
}
}
【讨论】: