我试图检查最后一个字符是否是文本字段中的空格并将其删除。如果以下代码不是" "代表是全部设置的,所以不是那样。
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
var cardNumber = NumberOutlet.text!
if cardNumber.characters.count > 1 {
let lastChar = cardNumber[cardNumber.index(before: cardNumber.endIndex)]
print(lastChar)
if lastChar == " " {
cardNumber.remove(at: cardNumber.index(before: cardNumber.endIndex))
} else {
_ = cardNumber.characters.dropLast()
}
NumberOutlet.text = cardNumber
}
return true
}
不知道为什么我不能删除最后一个字符,如果它是一个空格?
由于
答案 0 :(得分:0)
因此,代码的问题在于该函数永远不会知道用户何时完成输入。此外,文本字段中发生的更改将在该函数返回true后生效。你应该做的是比较replacementString。
因此,如果您允许返回按钮关闭键盘,我建议在“textFieldShouldReturn”中执行此检查。否则,如果您尝试阻止UITextField中的空格,请检查replacementString是否等于“”如果是,则返回false。
答案 1 :(得分:-1)
尝试popLast而不是dropLast
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
NumberOutlet.text?.characters.popLast()
print(NumberOutlet.text)
return true
}