swift - UITextField ओवरराइड के माध्यम से अधिकतम वर्ण की लंबाई की स्थापना



count character-limit (1)

आप UITextField subclass कर सकते हैं और UIControlEvents के संपादन के लिए एक लक्ष्य जोड़ने परिवर्तित। चयनकर्ता पद्धति के अंदर आप अपने टेक्स्टफ़ाइल टेक्स्ट प्रॉपर्टी में जोड़े गए वर्णों को सीमित करने के लिए संग्रह विधि उपसर्ग का उपयोग कर सकते हैं:

import UIKit
class LimitedLengthField: UITextField {
    var maxLength: Int = 10
    override func willMove(toSuperview newSuperview: UIView?) {
        addTarget(self, action: #selector(editingChanged), for: .editingChanged)
        editingChanged(self)
    }
    @objc func editingChanged(_ textField: UITextField) {
        guard let text = textField.text else { return }
        textField.text = String(text.prefix(maxLength))
    }
}

आप अपने कस्टम टेक्स्ट फ़ील्ड को प्रोग्रामैटिक रूप से जोड़ सकते हैं या इंटरफ़ेस बिल्डर का उपयोग कर सकते हैं:

import UIKit

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        let limitedLenghtField = LimitedLengthField(frame: CGRect(origin: CGPoint(x: 50, y: 50), size: CGSize(width: 200, height: 50)))
        limitedLenghtField.text = "123456789012345"
        view.addSubview(limitedLenghtField)
    }
}

मैं इस UITextField फ़ंक्शन को ओवरराइड कैसे कर सकता हूं ताकि उस पर अधिकतम वर्णों की सीमा हो सके?

override func shouldChangeText(in range: UITextRange, replacementText text: String) -> Bool {

}

मैंने स्टैक पर कुछ शोध किया है, लेकिन मैं जो भी पा सकता हूं वह यह फ़ंक्शन है (नीचे देखें)। सबसे पहले, मैं यह नहीं देख सकता कि यह एक ओवरराइड कैसे हो सकता है, और दूसरा, यह एनर्रेंज को ऐसे पैरामीटर के रूप में उपयोग कर रहा है जहां मेरे पास यूआईटीक्लिकरेन्ज है। यह कैसे लागू किया जा सकता है? धन्यवाद

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, 
                replacementString string: String) -> Bool {
        let currentString: NSString = textField.text! as NSString
        let newString: NSString = currentString.replacingCharacters(in: range, with: string) as NSString
        return newString.length <= 4
    }

मेरा असफल प्रयास:

override func shouldChangeText(in range: UITextRange, replacementText text: String) -> Bool {
        let currentString: NSString = self.text! as NSString
        let newString: NSString = currentString.replacingCharacters(in: range, with: text) as NSString
        return newString.length <= 4
    }

त्रुटि: अपेक्षित तर्क प्रकार 'NSRange' (उर्फ '_NSRange') को 'UITextRange' प्रकार के मान परिवर्तित नहीं किया जा सकता





character-limit