Ограничение длины UITextField

ios

#1

XCode v 10
На просторах интернета нашел ответ, что это можно сделать прям в сториборде (т.е. указать максимальное кол-во символов в поле).
К сожалению не нашел этого в сториборде.
Также нашел программное решение:

func fix(textField: UITextField) {
let t = textField.text
textField.text = t?.safelyLimitedTo(length: maxLength)
}

Но выдает, что значение типа строки не имеет такого “member”

Не подскажите, где я ошибаюсь?


#2

Вот есть видео на Вашу тему:


#3

попробуйте вот такой

  func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    let maxLength = 10
    let currentString: NSString = textField.text! as NSString
    let newString: NSString =
        currentString.replacingCharacters(in: range, with: string) as NSString
    return newString.length <= maxLength
}

#4

Используемая функция shouldChangeCharactersInRange не выбирается, а касаемо characters говорит, что deprecated.


#5

Ну понятно, что видео то не на Swift 4, но код адаптировать под Swift 4 очень несложно.
просто удаляете “characters.” и используете:

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

#6

А чтоб эта функция вызывалась не забывайте про textField.delegate