UITextField में टेक्स्ट परिवर्तन कैसे पकड़ें: 2025 की सर्वोत्तम प्रथाएँ

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

परिचय: टेक्स्ट परिवर्तन को "पकड़ना" क्यों बुनियादी है?

\n\n

कल्पना करें: आप रेसिपी खोजने के लिए एक ऐप बना रहे हैं। उपयोगकर्ता "पास्ता" टाइप करना शुरू करता है, और आपकी खोज बिना बटन दबाए तुरंत काम करनी चाहिए। या आप एक रजिस्ट्रेशन फॉर्म बना रहे हैं जहाँ उपयोगकर्ता द्वारा तीसरा अक्षर लिखते ही "पासवर्ड बहुत छोटा है" त्रुटि को हाइलाइट करना होगा।

\n\n

दोनों ही मामलों में, आपको वह सटीक क्षण जानना होगा जब UITextField में टेक्स्ट बदला। Stack Overflow पर इस प्रश्न के हज़ारों व्यूज़ हैं—और यह सही भी है। हर iOS डेवलपर को देर-सबेर इसका सामना करना पड़ता है।

\n\n

2025 में, इस समस्या को हल करने के कम से कम 4 तरीके हैं। कुछ पुराने हैं, जो समय की कसौटी पर खरे उतरे हैं। अन्य नए दृष्टिकोण हैं जिन्हें Apple सक्रिय रूप से बढ़ावा दे रहा है। इस लेख में हम सभी विकल्पों पर चर्चा करेंगे, क्लासिक से लेकर आधुनिक तक, और मैं दिखाऊंगा कि किसी विशिष्ट कार्य के लिए कौन सा तरीका चुनना चाहिए।

\n\n

चलिए शुरू करते हैं! 🚀

\n\n

तरीका 1. Target-Action: पुराना लेकिन कारगर

\n\n

सबसे सरल और समझने में आसान तरीका, जो iOS 2.0 से काम करता है। हाँ, इसे 15 साल से अधिक हो गए हैं, लेकिन यह अभी भी प्रासंगिक है।

\n\n

विचार यह है कि UITextField UIControl से विरासत में मिलता है, और इसलिए यह इवेंट जनरेट कर सकता है। हमें .editingChanged इवेंट में रुचि है—यह टेक्स्ट में हर बदलाव पर ट्रिगर होता है।

\n\n

कोड उदाहरण (UIKit + Storyboard या कोड के साथ)

\n\n
import UIKit\n\nclass ViewController: UIViewController {\n\n    @IBOutlet weak var searchTextField: UITextField!\n\n    override func viewDidLoad() {\n        super.viewDidLoad()\n        // टेक्स्ट बदलने के इवेंट के लिए लक्ष्य जोड़ें\n        searchTextField.addTarget(self,\n                                  action: #selector(textFieldDidChange(_:)),\n                                  for: .editingChanged)\n    }\n\n    @objc func textFieldDidChange(_ textField: UITextField) {\n        guard let text = textField.text else { return }\n        print("टेक्स्ट बदल गया: \\(text)")\n        // यहाँ खोज, सत्यापन आदि किया जा सकता है\n    }\n}
\n\n

लाभ: न्यूनतम कोड, प्रोटोकॉल में सब्सक्राइब करने की आवश्यकता नहीं, तेज़ी से काम करता है।

\n

नुकसान: @objc का उपयोग करना होगा—यह legacy Swift है। कोई सूक्ष्म नियंत्रण नहीं (उदाहरण के लिए, टेक्स्ट डालने और हटाने में अंतर नहीं कर सकते)।

\n\n

तरीका 2. डेलिगेट UITextFieldDelegate: हर अक्षर पर नियंत्रण

\n\n

यदि आपको केवल यह जानने की आवश्यकता नहीं है कि टेक्स्ट बदला है, बल्कि परिवर्तन को प्रभावित करना है (इनपुट को ब्लॉक करना, फ़ोन नंबर को फ़ॉर्मेट करना), तो डेलिगेट आपकी पसंद है।

\n\n

यहाँ मुख्य विधि है—textField(_:shouldChangeCharactersIn:replacementString:)। यह टेक्स्ट के वास्तविक रूप से बदलने से पहले कॉल किया जाता है।

\n\n

उदाहरण: फ़ोन नंबर फ़ॉर्मेट करना

\n\n
import UIKit\n\nclass ViewController: UIViewController, UITextFieldDelegate {\n\n    @IBOutlet weak var phoneTextField: UITextField!\n\n    override func viewDidLoad() {\n        super.viewDidLoad()\n        phoneTextField.delegate = self\n    }\n\n    func textField(_ textField: UITextField,\n                   shouldChangeCharactersIn range: NSRange,\n                   replacementString string: String) -> Bool {\n\n        // केवल अंकों की अनुमति दें\n        let allowedCharacters = CharacterSet.decimalDigits\n        let characterSet = CharacterSet(charactersIn: string)\n        guard allowedCharacters.isSuperset(of: characterSet) else {\n            return false\n        }\n\n        // लंबाई को 10 अक्षरों तक सीमित करें\n        let currentText = textField.text ?? ""\n        guard let stringRange = Range(range, in: currentText) else { return false }\n        let updatedText = currentText.replacingCharacters(in: stringRange, with: string)\n        return updatedText.count <= 10\n    }\n\n    // अतिरिक्त: उस क्षण को पकड़ें जब टेक्स्ट पहले ही बदल चुका हो\n    func textFieldDidChangeSelection(_ textField: UITextField) {\n        print("टेक्स्ट अपडेट किया गया: \\(textFi                

ब्लॉग

पुस्तक अनुशंसाएँ