Я використовую цей протокол / розширення в одному зі своїх додатків, і це трохи читабельніше. Мені подобається, як він розпізнає зворотні простори і явно повідомляє вам, коли персонаж є заднім простором.
Деякі речі, які слід врахувати:
1.Що б не реалізував це розширення протоколу, потрібно вказати обмеження символів. Зазвичай це буде ваш ViewController, але ви можете реалізувати обмеження символів як обчислене властивість та повернути щось інше, наприклад обмеження символів на одній із ваших моделей.
2. Вам потрібно буде зателефонувати до цього методу всередині методу делегування wordChangeCharactersInRange вашого текстового поля. Інакше ви не зможете заблокувати введення тексту, повернувши помилку тощо.
3. Ви, ймовірно, захочете дозволити резервні символи наскрізь. Тому я додав додаткову функцію для виявлення зворотних просторів. Ваш метод shouldChangeCharacters може перевірити це та повернути 'true' на початку, щоб ви завжди дозволяли мати відстані.
protocol TextEntryCharacterLimited{
var characterLimit:Int { get }
}
extension TextEntryCharacterLimited{
func charactersInTextField(textField:UITextField, willNotExceedCharacterLimitWithReplacementString string:String, range:NSRange) -> Bool{
let startingLength = textField.text?.characters.count ?? 0
let lengthToAdd = string.characters.count
let lengthToReplace = range.length
let newLength = startingLength + lengthToAdd - lengthToReplace
return newLength <= characterLimit
}
func stringIsBackspaceWith(string:String, inRange range:NSRange) -> Bool{
if range.length == 1 && string.characters.count == 0 { return true }
return false
}
}
Якщо когось із вас цікавить, у мене є репортаж Github, де я взяв частину цієї лімітної поведінки символів і вклав у рамки iOS. Існує протокол, який ви можете реалізувати, щоб отримати відображення обмеження символів у Twitter, яке показує, як далеко ви перевищили ліміт символів.
Характер Обмежена рамка на Github