मैं अपने एक ऐप में इस प्रोटोकॉल / एक्सटेंशन का उपयोग कर रहा हूं, और यह थोड़ा अधिक पठनीय है। मुझे पसंद है कि यह कैसे बैकस्पेस को पहचानता है और स्पष्ट रूप से आपको बताता है कि एक चरित्र एक बैकस्पेस है।
विचार करने के लिए कुछ बातें:
1. जो भी लागू करता है इस प्रोटोकॉल विस्तार के लिए एक चरित्र सीमा निर्दिष्ट करने की आवश्यकता है। यह आमतौर पर आपका ViewController होने जा रहा है, लेकिन आप एक सीमित संपत्ति के रूप में चरित्र सीमा को लागू कर सकते हैं और कुछ और लौटा सकते हैं, उदाहरण के लिए आपके किसी मॉडल पर एक चरित्र सीमा।
2. आपको इस विधि को अपने पाठ क्षेत्र के कंधोंच्रेचरर्स इनरेंज प्रतिनिधि विधि के अंदर कॉल करना होगा। अन्यथा आप असत्य को वापस करके पाठ प्रविष्टि को ब्लॉक करने में सक्षम नहीं होंगे, आदि।
3. आप संभवतः बैकस्पेस वर्णों के माध्यम से अनुमति देना चाहेंगे। इसलिए मैंने बैकस्पेस का पता लगाने के लिए अतिरिक्त फ़ंक्शन को जोड़ा। आपकी चेंजचेकच्रेकर्स विधि इसके लिए जाँच कर सकती है और 'सत्य' को जल्दी लौटा सकती है ताकि आप हमेशा बैकस्पेस की अनुमति दें।
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
}
}
यदि आप में से कोई भी रुचि रखते हैं, तो मेरे पास एक गितुब रेपो है जहां मैंने इस चरित्र सीमा व्यवहार में से कुछ लिया है और एक आईओएस ढांचे में डाल दिया है। एक प्रोटोकॉल है जिसे आप ट्विटर जैसी कैरेक्टर लिमिट डिसप्ले प्राप्त करने के लिए कार्यान्वित कर सकते हैं जो आपको दिखाता है कि आप कैरेक्टर लिमिट से कितनी दूर जा चुके हैं।
जीथब पर कैरेक्टरलाइज्ड फ्रेमवर्क