Bu protokolü / uzantıyı uygulamalarımdan birinde kullanıyorum ve biraz daha okunaklı. Geri boşlukları nasıl tanıdığını ve bir karakterin ne zaman geri alacağını size açıkça söylemesini seviyorum.
Dikkate alınması gereken bazı şeyler:
1. Bu protokol uzantısını uygulayan ne olursa olsun, bir karakter sınırı belirtmelidir. Bu tipik olarak ViewController'ınız olacaktır, ancak karakter sınırını hesaplanmış bir özellik olarak uygulayabilir ve başka bir şey, örneğin modellerinizden birinde bir karakter sınırı döndürebilirsiniz.
2. Bu yöntemi metin alanınızın shouldChangeCharactersInRange temsilci yönteminin içinde çağırmanız gerekecektir. Aksi takdirde, yanlış vb. Döndürerek metin girişini engelleyemezsiniz.
3. Büyük olasılıkla geri alma karakterlerinin geçmesine izin vermek isteyeceksiniz. Bu yüzden geri boşlukları tespit etmek için ekstra fonksiyon ekledim. ShouldChangeCharacters yönteminiz bunu kontrol edebilir ve erkenden 'true' döndürebilir, böylece her zaman geri boşluklara izin verebilirsiniz.
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
}
}
Herhangi biriniz ilgilenirse, bu karakter sınırı davranışının bir kısmını aldığım ve bir iOS çerçevesine koyduğum bir Github depom var. Karakter sınırını ne kadar aştığınızı gösteren Twitter benzeri bir karakter sınırı ekranı elde etmek için uygulayabileceğiniz bir protokol var.
Github'da CharacterLimited Framework