Swift can';如果最后一个字符为';这是一个空间
我试图检查最后一个字符是否是文本字段中的空格,并将其删除。如果不是“”,下面的代码将起作用。委托是所有设置,所以不是那样Swift can';如果最后一个字符为';这是一个空间,swift,uitextfield,uitextfielddelegate,Swift,Uitextfield,Uitextfielddelegate,我试图检查最后一个字符是否是文本字段中的空格,并将其删除。如果不是“”,下面的代码将起作用。委托是所有设置,所以不是那样 func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { var cardNumber = NumberOutlet.text! if cardNumber.c
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
}
只是不知道为什么我不能删除最后一个字符,如果它是一个空格
谢谢试着用popLast而不是dropLast
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
NumberOutlet.text?.characters.popLast()
print(NumberOutlet.text)
return true
}
因此,代码的问题是函数永远不会知道用户何时完成键入。此外,textfield中发生的更改将在该函数返回true后生效。您应该做的是比较replacementString
因此,如果您允许返回按钮关闭键盘,我建议您在“textFieldShouldReturn”中执行此检查。否则,如果您试图阻止UITextField中出现空格,请检查replacementString是否等于“”,如果是,返回false。如果在
shouldChangeCharacters中修改文本字段的文本,则永远不要返回true
。您应该只使用textField
参数。