जब मैं UITextField में वापसी कुंजी दबाता हूं तो कीबोर्ड को कैसे छिपाया जाए?


148

टेक्स्टफ़ील्ड में क्लिक करने से कीबोर्ड दिखाई देता है। जब उपयोगकर्ता रिटर्न कुंजी दबाता है तो मैं इसे कैसे छिपा सकता हूं?


13
स्टैक ओवरफ्लो के बारे में अच्छी बात यह है कि MANY प्रश्नों का उत्तर पहले ही दिया जा चुका है, विशेष रूप से सरल। इसलिए, पूछने से पहले कृपया FIRST के जवाब की तलाश करें। देखें, यह सरल है: stackoverflow.com/search?q=iphone+hide+keyboard
Felixyz

यह UITextfield का एक उपवर्ग है जो गतिशील रूप से UIReturnKey को पाठ / स्ट्रिंग स्थिति के अनुसार बदलता है: github.com/codeinteractiveapps/OBReturnKeyTextField
CodeInteractive

जवाबों:


286

सबसे पहले अपनी फाइल को UITextField के लिए प्रतिनिधि बनाएं

@interface MYLoginViewController () <UITextFieldDelegate>

@end

फिर इस विधि को अपने कोड में जोड़ें।

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

भी जोड़ दें self.textField.delegate = self;


1
उत्सुक, <UITextFieldDelegate> क्यों आवश्यक नहीं है? आमतौर पर आप इस मामले में एक चेतावनी देखेंगे।
पिक्सफ्रीक

7
यदि आप इंटरफ़ेस बिल्डर का उपयोग करके अपनी फ़ाइल प्रतिनिधि बनाते हैं तो <uITextFieldDelegate> .h फ़ाइल में आवश्यक नहीं है ..
सौरभ

1
<uITextFieldDelegate> .h फ़ाइल में जोड़कर और viewdidload में प्रतिनिधि सेट करें [yourTextField setDelegate: self]; इसे पूरा करेंगे!
उमित काया

@ सौरभ स्टोरीबोर्ड के बारे में ऐसा क्या खास है जिसने वीसी बनाया?
3:30 पर पॉल ब्रेवस्कीस्की

62

में viewDidLoadघोषित:

[yourTextField setDelegate:self];

फिर, प्रतिनिधि पद्धति के ओवरराइड को शामिल करें:

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

6
setDelegate:अनुस्मारक के लिए +1 । निश्चित रूप से भूल गया था और कोड पहले काम नहीं कर रहा था।
पाइपरचेस्टर

2
क्या यह टेक्स्टफ़िल्ड नहीं होना चाहिए, बजाय आपके टेक्स्ट के बजाय इसे पास किया जाए?
क्लाइव जेफरीज़

यह कहने का एक तरीका है कि अपने टेक्स्ट के प्रतिनिधि को घोषित करें
ऑस्कर कास्टेलन

1
<UITextFieldDelegate> .h फ़ाइल में होना चाहिए, अन्यथा चेतावनी दिखाई देगी!
उदित काया

22

स्विफ्ट में यह कोशिश करो ,

चरण 1: प्रतिनिधि को स्वयं के रूप में सेट करेंtextField

textField.delegate = self

चरण 2: अपनी कक्षा घोषणा के नीचे इस UITextFieldDelegate जोड़ें,

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

14

तेजी से इस तरह से करें:
सबसे पहले अपने ViewControllerकार्यान्वयन में यह UITextFieldDelegate उदाहरण के लिए।

class MyViewController: UIViewController, UITextFieldDelegate {
....
}

अब एक डेलीगेट को उसमें जोड़ें TextFieldजिसमें आप कीबोर्ड को खारिज करना चाहते हैं जब वापसी या तो viewDidLoadनीचे की तरह विधि में टैप की जाती है या जहां आप इसे प्रारंभ कर रहे हैं। उदाहरण के लिए।

override func viewDidLoad() {

    super.viewDidLoad()   
    myTextField.delegate = self
}

अब इस विधि को जोड़ें।

func textFieldShouldReturn(textField: UITextField) -> Bool {

    textField.resignFirstResponder()
    return true
}

1
यदि आप आईबी में प्रतिनिधि सेट करते हैं तो दूसरा कदम जरूरी नहीं है।
hris.to

प्रकट होता है (स्विफ्ट के वर्तमान संस्करणों में) "टेक्स्टफिल्ड:" से पहले एक अंडरस्कोर होना चाहिए:
ब्रायस सैंडलंड

2

इसे इस्तेमाल करे,

[textField setDelegate: self];

फिर, TextField प्रतिनिधि विधि में

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

ऐसा करने के लिए यह सबसे अच्छा अभ्यास नहीं है।
orafaelreis

इंटरफ़ेस परिभाषा में UITextFieldDelegate की जरूरत है।
अल्ट अल्तानेल

@AlpAltunel: टिप्पणी के लिए धन्यवाद, यह 4 साल पहले था।
विनेश टीपी

1

उस विधि में से UITextField, और ओवर राइड, textFieldShouldReturnविधि का प्रतिनिधि सेट करें , केवल दो पंक्तियों के बाद लिखें:

[textField resignFirstResponder];
return YES;

बस। एक कोड लिखने से पहले UITextFieldगुण विंडो से "पूरा" करने के लिए एक प्रतिनिधि और सेट कुंजी प्रकार सेट करने के लिए मत भूलना । (कमांड + शिफ्ट + 1)।


1

आप "प्राइमरी एक्शन ट्रिगर" (UITextField पर राइट क्लिक) को IBAction से जोड़ सकते हैं और आप पहले उत्तरदाता (प्रतिनिधिमंडल के बिना) इस्तीफा दे सकते हैं। उदाहरण (स्विफ्ट 4):

@IBAction func textFieldPrimaryAction(_ sender: UITextField) {
    sender.resignFirstResponder()
    ...
}

स्टोरीबोर्ड का उपयोग करते हुए पसंदीदा तरीका।
लाल

1

स्विफ्ट 4

UITextFieldदृश्य नियंत्रक में प्रतिनिधि सेट करें field.delegate = self, और फिर:

extension ViewController: UITextFieldDelegate {
    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        // don't force `endEditing` if you want to be asked for resigning
        // also return real flow value, not strict, like: true / false
        return textField.endEditing(false)
    }
}

आप अंतिम कुंजी तक उपयोगकर्ताओं को 'टैब' पर अगले पाठ क्षेत्र में 'टैब' के लिए कैसे हैंडल करना चाहते हैं, जब तक कि यह अंतिम न हो जाए और फिर यह असाइन हो जाए? स्विफ्टयूआई में भी।
Learn2Code

@ Learn2Code एक प्रबंधक बनाते हैं, टेक्स्टफिल्ड्स और चेन इकट्ठा करते हैं, अंतिम एक फिनिश फ़ंक्शन को ट्रिगर करेगा।
डिंम्पियाक्स

1

यदि आप किसी विशेष कीबोर्ड उपयोग के लिए कीबोर्ड [self.view resignFirstResponder]; को छिपाना चाहते हैं, यदि आप किसी कीबोर्ड को दृश्य उपयोग से छुपाना चाहते हैं[self.view endEditing:true];



0

ठीक है, मुझे लगता है कि एक नौसिखिया चीजों के लिए थोड़ा भ्रमित हो सकता है। मुझे लगता है कि सही उत्तर उपरोक्त सभी का मिश्रण है, कम से कम स्विफ्ट 4 में।

या तो एक एक्सटेंशन बनाएं या ViewController का उपयोग करें जिसमें आप इसका उपयोग करना चाहते हैं लेकिन UITextFieldDelegate को लागू करना सुनिश्चित करें। पुन: प्रयोज्य के लिए मुझे एक एक्सटेंशन का उपयोग करना आसान लगा:

extension UIViewController : UITextFieldDelegate {
    ...
}

लेकिन वैकल्पिक काम भी करता है:

class MyViewController: UIViewController {
    ...
}

विधि टेक्स्ट जोड़ें। ShouldReturn (आपके पिछले विकल्प के आधार पर, या तो एक्सटेंशन में या आपके ViewController में)

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

अपने व्यूडलॉड विधि में, टेक्स्टफील्ड के प्रतिनिधि को स्वयं सेट करें

@IBOutlet weak var myTextField: UITextField!
...

override func viewDidLoad() {
    ..
    myTextField.delegte = self;
    ..
}

वह सब होना चाहिए। अब, जब आप दबाते हैं returnतो textFieldShouldReturnबुलाया जाना चाहिए।


0

इस वर्ग को परिभाषित करें और फिर कक्षा का उपयोग करने के लिए अपने पाठ क्षेत्र को सेट करें और जब रिटर्न स्वचालित रूप से दबाया जाता है तो यह पूरे छिपने वाले कीबोर्ड को स्वचालित करता है।

class TextFieldWithReturn: UITextField, UITextFieldDelegate
{

    required init?(coder aDecoder: NSCoder) 
    {
        super.init(coder: aDecoder)
        self.delegate = self
    }

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

}

तब स्टोरीबोर्ड में आपको बस कक्षा का उपयोग करने के लिए फ़ील्ड सेट करना होगा:

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

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