UITextField - रिटर्न बटन ईवेंट कैप्चर करें


101

UITextField का संपादन करते समय उपयोगकर्ता द्वारा "वापसी" कीबोर्ड बटन दबाने पर मैं कैसे पता लगा सकता हूं? उपयोगकर्ता को "रिटर्न" बटन दबाने पर मुझे कीबोर्ड को खारिज करने के लिए ऐसा करने की आवश्यकता है।

धन्यवाद।

जवाबों:


212
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    return NO;
}

स्टोरीबोर्ड में प्रतिनिधि को सेट करने के लिए मत भूलना ...

यहां छवि विवरण दर्ज करें


47
सुनिश्चित करें कि आपका दृश्य नियंत्रक टेक्स्टफ़ील्ड के प्रतिनिधि के रूप में सेट है।
ज़ेकेल

1
धन्यवाद। मेरे लिए मैंने प्रतिनिधि को सेट किया self.yourTextField.delegate = self;। यहां तक ​​कि कई टेक्स्ट फ़ील्ड भी काम करते हैं।
haxpor

@Praxiteles अब प्रतिनिधि मंडल की आवश्यकता के बिना स्टोरीबोर्ड में किया जा सकता है कृपया नीचे दिए गए उत्तर की जांच करें।
ब्लेक लॉकली

51

प्रतिनिधिमंडल की आवश्यकता नहीं है, यहाँ एक लाइनर है:

- (void)viewDidLoad {
    [textField addTarget:textField
                  action:@selector(resignFirstResponder)
        forControlEvents:UIControlEventEditingDidEndOnExit];
}

अफसोस की बात है कि आप इसे सीधे अपने स्टोरीबोर्ड में नहीं कर सकते हैं (आप उन कार्यों को नियंत्रण से कनेक्ट नहीं कर सकते हैं जो उन्हें स्टोरीबोर्ड में फेंकते हैं), लेकिन आप इसे मध्यस्थ कार्रवाई के माध्यम से कर सकते हैं।


1
मैं केवल यह बताना चाहता हूं कि UIControlEventEditingDidEndOnExitयदि textFieldShouldReturn:प्रतिनिधि विधि वापस आती है (पाठ क्षेत्र से पहले इस्तीफा दिए बिना) तो उस घटना को भेजा जाएगा ।
एलेक्स-आई

आपको प्रतिनिधिमंडल को लागू करने की आवश्यकता नहीं है । लेकिन हो सकता है कि आपको YESइस विधि के लिए लौटना पड़े ।
23

9

स्विफ्ट 3.0

override open func viewDidLoad() {
    super.viewDidLoad()    
    textField.addTarget(self, action: #selector(enterPressed), for: .editingDidEndOnExit)
}

enterPressed () फ़ंक्शन में आपके द्वारा किए जाने वाले सभी व्यवहार हैं

func enterPressed(){
    //do something with typed text if needed
    textField.resignFirstResponder()
}

8

अब आप भेजे गए ईवेंट 'डिड एंड ऑन एक्जिट' का उपयोग करके स्टोरीबोर्ड कर सकते हैं।

आपके विचार में नियंत्रक उपवर्ग:

 @IBAction func textFieldDidEndOnExit(textField: UITextField) {
    textField.resignFirstResponder()
}

वांछित टेक्स्टफील्ड के लिए अपने स्टोरीबोर्ड में:

यहां छवि विवरण दर्ज करें


यह अब सही उत्तर है।
Psiloc

3

UITextFieldDelegate का उपयोग करके स्विफ्ट संस्करण:

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

2

स्विफ्ट 5

textField.addTarget(textField, action: #selector(resignFirstResponder), for: .editingDidEndOnExit)

-1
- (BOOL)textFieldShouldReturn:(UITextField *)txtField 
{
[txtField resignFirstResponder];
return NO;
}

जब एंटर बटन पर क्लिक किया जाता है तो यह डेलीगेट विधि कहलाती है। आप इस डेलीगेट विधि से रिटर्न बटन पर कब्जा कर सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.