限制 UITextField 的字符时完成按钮不起作用

Done button don't work when restricting characters for UITextField

我正在使用下面的代码来限制用户只能将某些字符用于 UITextField。允许的字符在扩展字符串中。它运行良好,但我面临的问题是用户无法按完成按钮和 运行 我的代码。

我是 swift 和堆栈溢出的新手。我不知道该怎么办。

extension String {

    var containsValidCharacter: Bool {
        let characterSet = CharacterSet(charactersIn: "1234567890 -")
        let range = (self as NSString).rangeOfCharacter(from: characterSet)
        return range.location != NSNotFound
    }
}


func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    return string.containsValidCharacter
}

我只想让“完成”按钮起作用。

尝试覆盖此 UITextFieldDelegate 方法。

func textFieldShouldReturn(_ textField: UITextField) -> Bool{
    return true    
}

Documentation