当前存在一个文本字段,在用户输入数据后,它必须以类似于60/500的格式发布到服务器,因此基本上是一个分数。我熟悉设置文本字段并通过情节提要板将其连接以及设置文本输入特征,以便显示数字键盘。我只是不确定如何将输入的文本字段更改为'30 / 90'分数格式并将其发布。任何帮助将不胜感激!
答案 0 :(得分:0)
在将self
设置为委托之后,您可以通过这种方式进行操作:
let slash = "/"
let digits = CharacterSet(charactersIn: "0123456789")
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
//Deleting
if string.count == 0 {
var text = textField.text!
let start = text.startIndex
let beginRange = text.index(start, offsetBy: range.location)
let endRange = text.index(start, offsetBy: range.location + range.length)
text = String(text.prefix(upTo: beginRange))
+ String(text.suffix(from: endRange))
text = text.replacingOccurrences(of: "/", with: "")
if text.count >= 3 {
text = String(text.prefix(2)) + "/" + String(text.dropFirst(2))
}
textField.text = text
return false
}
//Typing
let count = textField.text!.count
guard string.count == 1,
count < 6,
let scalar = Character(string).unicodeScalars.first else {
return false
}
let isDigit = digits.contains(scalar)
switch count {
case 0, 3..<6 :
return isDigit
case 1:
if isDigit {
textField.text = textField.text! + string + "/"
}
return false
case 2:
if string == slash {
return true
} else {
textField.text = textField.text! + "/" + string
return false
}
default:
return false
}
}
此代码也适用于默认键盘,而不仅仅是数字键盘。