2015-05-22 11 views
8

textFieldShouldReturn फ़ंक्शन बिल्कुल नहीं कहा जा रहा है: इसमें कोई त्रुटि नहीं है लेकिन कीबोर्ड बिल्कुल प्रतिक्रिया नहीं देता है।टेक्स्ट फ़ील्डशल्डरटन फ़ंक्शन क्यों नहीं कहा जा रहा है?

मेरा मामला How to hide keyboard in swift on pressing return key? से अलग है क्योंकि मेरे मामले में कुछ भी नहीं हो रहा है और अन्य मामले उद्देश्य-सी में हैं।

import UIKit 

class ViewController: UIViewController { 

    @IBOutlet var textField: UITextField! 

    func textFieldShouldReturn(textField: UITextField) -> Bool { 
     resignFirstResponder() 
     return true 
    } 
} 

textfield मेरी स्टोरीबोर्ड पर एक पाठ क्षेत्र के लिए एक दुकान है:

यहाँ मेरी कोड है। मैंने resignFirstResponder के बजाय self.endEditing भी कोशिश की।

उत्तर

27

इस उत्तर के बाकी अभी भी बहुत उपयोगी है, और मैं इसे वहाँ छोड़ देंगे के रूप में यह संभवत: अन्य askers मदद कर सकते हैं ... लेकिन यहाँ, मैं इस विशिष्ट उदाहरण के साथ स्पष्ट समस्या याद किया ...

हम टेक्स्ट फ़ील्ड पर resignFirstResponder पर कॉल नहीं कर रहे हैं। हम इसे व्यू कंट्रोलर पर बुला रहे हैं। हम पाठ क्षेत्र पर इसे कहते है, तो आपके कोड को संशोधित करने के लिए इस तरह देखने की जरूरत है:

func textFieldShouldReturn(textField: UITextField) -> Bool { 
    textField.resignFirstResponder() 
    return true 
} 

एक UITextField केवल वस्तु है जो अपने प्रतिनिधि है पर textFieldShouldReturn संपत्ति कॉल करेंगे।

हम चाहते हैं कि निर्धारित करने के लिए एक viewDidLoad विधि जोड़कर प्रोग्राम के रूप में इसे ठीक कर सकते हैं:

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.textField.delegate = self 
} 

लेकिन हम भी निर्माण समय में स्टोरीबोर्ड के माध्यम से सेट कर सकते हैं।

enter image description here

हैं कि वृत्त delegate के बगल में रिक्त है, तो हम प्रतिनिधि हमारे UITextField के लिए सेट नहीं किया है:

सही जांच करें और देखें या नहीं, प्रतिनिधि निर्धारित किया गया है करने के लिए पाठ फ़ील्ड पर क्लिक करें अभी तक।

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

enter image description here

जब आप उचित रूप से दृश्य नियंत्रक को झुका दिया है एक प्रतिनिधि के रूप में, इस मेनू इस तरह दिखना चाहिए:

enter image description here

0

मैं एक स्विफ्ट 4 Udemy पाठ्यक्रम में दाखिला लिया हूँ, और प्रशिक्षक ने CNtrl के अलावा व्यू कंट्रोलर के लिए UITextFieldDelegate क्लास जोड़ने के लिए कहा - टेक्स्ट फ़ील्ड से ViewController बटन पर खींचें और प्रतिनिधि का चयन करें।

आयात UIKit

class ViewController: UIViewController, UITextFieldDelegate { 

    func textFieldShouldReturn(textField: UITextField) -> Bool { 
     textField.resignFirstResponder() 
     return true 
    } 
} 
संबंधित मुद्दे