स्क्रीन पर कीबोर्ड छिपाने के लिए हमें iOS SDK में पूर्वनिर्धारित कुछ आंतरिक फंक्शन्स का उपयोग करना होता है। कीबोर्ड स्क्रीन पर तब दिखाई देता है जब हम टेक्स्ट फील्ड या टेक्स्ट व्यू में टाइप कर रहे होते हैं। हमें टेक्स्ट फील्ड के अनुसार आंतरिक फंक्शन का उपयोग करना होता है।
सिंगल टेक्स्ट फील्ड के लिए
उदाहरण के लिए यदि वर्तमान टेक्स्ट फील्ड tfOne है, तो हम नीचे दिए गए कोड का उपयोग करके टेक्स्ट फील्ड को छिपा सकते हैं:
tfOne.resignFirstResponder()
यह कोड जब भी कॉल किया जाएगा कीबोर्ड छिपा देगा, हम इसे बटन के एक्शन या जेस्चर रिकॉग्नाइज़र के लिए कॉल कर सकते हैं।
मल्टीपल टेक्स्ट फील्ड्स/टेक्स्ट व्यूज के लिए
यह मेथड सीमित टेक्स्ट फील्ड्स के लिए अच्छा है, लेकिन यदि हम मल्टीपल टेक्स्ट फील्ड्स या टेक्स्ट व्यूज के साथ ऐसा ही करना चाहते हैं तो इसे बेहतर बनाने की जरूरत है।
हम इसके लिए एक फंक्शन बना सकते हैं:
func hideKeyboardWhenTappedAround() {
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(UIViewController.dismissKeyboard))
tap.cancelsTouchesInView = false
view.addGestureRecognizer(tap)
}
@objc func dismissKeyboard() {
view.endEditing(true)
}
हम इस फंक्शन का उपयोग अपनी क्लास में कर सकते हैं और जब भी हम किसी टेक्स्ट फील्ड या टेक्स्ट व्यू के बाहर स्क्रीन पर टैप करेंगे तो कीबोर्ड छिप जाएगा।
UIViewController एक्सटेंशन के रूप में
लेकिन जैसा कि आप देख सकते हैं कि इसे एक व्यू की आवश्यकता होती है जिस पर जेस्चर जोड़ा जाएगा, इसलिए हमें इस फंक्शन को UIViewController एक्सटेंशन में एम्बेड करने की आवश्यकता है।
extension UIViewController {
func hideKeyboardWhenTappedAround() {
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(UIViewController.dismissKeyboard))
tap.cancelsTouchesInView = false
view.addGestureRecognizer(tap)
}
@objc func dismissKeyboard() {
view.endEditing(true)
}
}
अब हम इस फंक्शन को अपने viewDidLoad() में कॉल कर सकते हैं और फिर जब भी हम व्यू में कहीं भी टैप करेंगे (टेक्स्ट व्यू/फील्ड को छोड़कर), कीबोर्ड छिप जाएगा।