Как ограничить длину и специальные символы UItextField?

-1

Я могу ограничить длину, используя код ниже, но я не могу найти способ ограничить специальные символы.

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
let newLength = count(textField.text.utf16) + count(string.utf16) - range.length
if (textField.placeholder == "USERNAME")
{
    //Also limit special characters here
    return newLength <= 15 // Bool
}

символы, которые я хочу разрешить:

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_.

Я пробовал следовать этой ссылке, но в объективе C, и у меня возникли проблемы с ее объединением с моим текущим 15-символьным лимитированным кодом выше

Теги:
uitextfield

2 ответа

3
Лучший ответ

Альтернативный регулярному выражению, вы можете сначала получить все допустимые символы в набор:

 var charactesAllowed = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_."
 var charactersSet = [Character](charactesAllowed)

затем попробуйте увидеть, находятся ли в этом массиве самые последние типизированные символы

var newCharacter = //whatever the character is, ex: "A"
if(contains(charactersSet, newCharacter))
{
    println("Allowed")
    // Add it into the label text
}
  • 0
    Я использовал это как ссылку, и это привело меня к тому, что я искал. Я должен был создать расширение для содержит
  • 0
    рад, что это помогло :)
-3
let  ACCEPTABLE_CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"


if textField == textFieldNumber{
            let characterSet = CharacterSet.init(charactersIn: ACCEPTABLE_CHARACTERS).inverted
            maxLength = 11
            let currentString: NSString = textField.text! as NSString
            let newString: NSString =
                currentString.replacingCharacters(in: range, with: string) as NSString
            let filter = string.components(separatedBy: characterSet).joined(separator:"")
            return ((string == filter) && newString.length <= maxLength!)
        }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню