Ios 限制字符的问题&;限制swift中的特殊字符?

Ios 限制字符的问题&;限制swift中的特殊字符?,ios,swift,uitextfield,uitextfielddelegate,Ios,Swift,Uitextfield,Uitextfielddelegate,我正在该屏幕上创建一个OTP屏幕,我添加了6个文本字段。现在我想限制只输入一个字符,还想限制用户不输入任何特殊字符。下面是我使用的代码,请查看代码并让我知道有什么问题 let notAllowedCharacters = "!@#$%^&*()_+{},./[]?:;"; func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange,replacementString string:

我正在该屏幕上创建一个OTP屏幕,我添加了6个文本字段。现在我想限制只输入一个字符,还想限制用户不输入任何特殊字符。下面是我使用的代码,请查看代码并让我知道有什么问题

let notAllowedCharacters = "!@#$%^&*()_+{},./[]?:;";

 func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange,replacementString string: String) -> Bool
    {
        guard let text = textField.text else { return true }
        let newLength = text.characters.count + string.characters.count - range.length
        if newLength <= 1 {

            return true
        }
        else {
            let set = NSCharacterSet(charactersIn: notAllowedCharacters);
            let filtered = string.components(separatedBy: set as CharacterSet).joined(separator: "")
            return filtered == string;
        }
    }
让notAllowedCharacters=“!@#$%^&*()+{},./[]?:;”;
func textField(textField:UITextField,shouldChangeCharacters范围:NSRange,replacementString:string)->Bool
{
guard let text=textField.text else{return true}
让newLength=text.characters.count+string.characters.count-range.length

如果newLength在检查字符长度时,您需要添加
NSCharacterSet
的控件。否则,如果始终有一个字符,则无论字符是什么,它都将始终为真。将代码更新为以下内容,它将适用于您:

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange,replacementString string: String) -> Bool {
    guard let text = textField.text else { return true }
    let newLength = text.characters.count + string.characters.count - range.length

    let set = NSCharacterSet(charactersIn: notAllowedCharacters)
    if newLength <= 1 && !(string.rangeOfCharacter(from: set as CharacterSet) != nil) {
        return true
    } else {
        return false
    }
}
func textField(textField:UITextField,shouldChangeCharacters范围:NSRange,replacementString:string)->Bool{
guard let text=textField.text else{return true}
让newLength=text.characters.count+string.characters.count-range.length
let set=NSCharacterSet(字符sin:notAllowedCharacters)
如果是newLength