如果它是一个空格,Swift无法删除最后一个字符

时间:2017-03-20 14:23:25

标签: swift uitextfield uitextfielddelegate

我试图检查最后一个字符是否是文本字段中的空格并将其删除。如果以下代码不是" "代表是全部设置的,所以不是那样。

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
}

不知道为什么我不能删除最后一个字符,如果它是一个空格?

由于

2 个答案:

答案 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
}