用户应该无法删除文本字段中的给定符号

Kri*_*kur 1 character restrict textfield swift

在此处输入图片说明

func textField(textField: UITextField,shouldChangeCharactersInRange range: NSRange,replacementString string: String) -> Bool { return true }

我必须限制用户快速从文本字段中删除这个符号。用户可以从文本字段中删除任何内容而不删除此符号。

Cra*_*itt 5

由于最可能的情况是欧元符号将始终在文本字段中并且将是第一个字符,我会检查要更改的字符范围是否长于 0 并从 0 开始。(无论符号如何,这都将起作用在第一个位置)

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
    if range.length>0  && range.location == 0 {
            return false
    }
    return true
}
Run Code Online (Sandbox Code Playgroud)

但是,如果欧元符号并不总是在文本字段中,您可以通过获取对用户正在更改的字符串的引用并检查它是否包含欧元符号来检查用户是否正在删除此符号:

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
    if range.length>0  && range.location == 0 {
        let changedText = NSString(string: textField.text!).substringWithRange(range)
        if changedText.containsString("€") {
            return false
        }
    }
    return true
}
Run Code Online (Sandbox Code Playgroud)