ฉันใช้โปรโตคอล / ส่วนขยายนี้ในแอปหนึ่งของฉันและอ่านได้ง่ายขึ้นเล็กน้อย ฉันชอบวิธีที่มันจดจำ backspaces และบอกคุณอย่างชัดเจนเมื่อตัวละครเป็น backspace
สิ่งที่ควรพิจารณา:
1. สิ่งใดก็ตามที่ใช้ส่วนขยายโปรโตคอลนี้จำเป็นต้องระบุขีด จำกัด ของอักขระโดยทั่วไปจะเป็น ViewController ของคุณ แต่คุณสามารถใช้การ จำกัด จำนวนอักขระเป็นคุณสมบัติที่คำนวณและส่งคืนอย่างอื่นได้ตัวอย่างเช่นการ จำกัด จำนวนอักขระในโมเดลของคุณ
2. คุณจะต้องเรียกใช้เมธอดนี้ภายในเมธอดผู้ร่วมประชุม shouldChangeCharactersInRange ของช่องข้อความของคุณ มิฉะนั้นคุณจะไม่สามารถบล็อกการป้อนข้อความโดยส่งคืนเท็จเป็นต้น
3. คุณอาจต้องการอนุญาตให้ใช้อักขระ backspace ผ่าน นั่นเป็นเหตุผลที่ฉันเพิ่มฟังก์ชันพิเศษในการตรวจจับแบ็คสเปซ เมธอด shouldChangeCharacters ของคุณสามารถตรวจสอบสิ่งนี้และส่งคืน 'จริง' ในช่วงต้นดังนั้นคุณจึงอนุญาตให้แบ็คสเปซได้เสมอ
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 ซึ่งจะแสดงให้คุณเห็นว่าคุณใช้อักขระเกินขีด จำกัด ไปแล้วเท่าใด
CharacterLimited Framework บน Github