Saya telah menggunakan protokol / ekstensi ini di salah satu aplikasi saya, dan ini sedikit lebih mudah dibaca. Saya suka bagaimana ia mengenali ruang belakang dan secara eksplisit memberi tahu Anda ketika karakter adalah spasi mundur.
Beberapa hal yang perlu diperhatikan:
1. Apa pun yang mengimplementasikan, ekstensi protokol ini perlu menentukan batas karakter. Itu biasanya akan menjadi ViewController Anda, tetapi Anda dapat mengimplementasikan batas karakter sebagai properti yang dihitung dan mengembalikan sesuatu yang lain, misalnya batas karakter pada salah satu model Anda.
2. Anda harus memanggil metode ini di dalam metode delegasi shouldChangeCharactersInRange bidang teks Anda. Jika tidak, Anda tidak akan dapat memblokir entri teks dengan mengembalikan false, dll.
3. Anda mungkin ingin mengizinkan karakter spasi mundur lewat. Itu sebabnya saya menambahkan fungsi ekstra untuk mendeteksi ruang belakang. Metode shouldChangeCharacters dapat memeriksanya dan mengembalikan 'true' lebih awal sehingga Anda selalu mengizinkan spasi belakang.
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
}
}
Jika ada di antara Anda yang tertarik, saya memiliki repo Github di mana saya telah mengambil beberapa perilaku batas karakter ini dan memasukkannya ke dalam kerangka kerja iOS. Ada protokol yang dapat Anda terapkan untuk mendapatkan tampilan batas karakter seperti Twitter yang menunjukkan seberapa jauh Anda telah melampaui batas karakter.
Kerangka CharacterLimited di Github