IPhone पर कीबोर्ड की गायब करने के लिए वापसी कुंजी कैसे बनाएं?


108

मेरे पास दो UITextFields(जैसे उपयोगकर्ता नाम और पासवर्ड) हैं, लेकिन कीबोर्ड पर रिटर्न कुंजी दबाने पर मुझे कीबोर्ड से छुटकारा नहीं मिल सकता है। मैं यह कैसे कर सकता हूँ?

जवाबों:


242

सबसे पहले आपको UITextFieldDelegateअपने View / ViewController की हैडर फ़ाइल में इस तरह से प्रोटोकॉल के अनुरूप होना चाहिए :

@interface YourViewController : UIViewController <UITextFieldDelegate>

फिर अपनी .m फाइल में आपको निम्न UITextFieldDelegateप्रोटोकॉल विधि को लागू करने की आवश्यकता है :

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

    return YES;
}

[textField resignFirstResponder]; सुनिश्चित करता है कि कीबोर्ड खारिज कर दिया गया है।

सुनिश्चित करें कि आप टेक्स्ट फ़ील्ड में प्रवेश करने के बाद अपना दृश्य / व्यूकंट्रोलर UITextField के प्रतिनिधि के रूप में सेट कर रहे हैं:

yourTextField = [[UITextField alloc] initWithFrame:yourFrame];
//....
//....
//Setting the textField's properties
//....    
//The next line is important!!
yourTextField.delegate = self; //self references the viewcontroller or view your textField is on

7
आप टेक्स्टफ़ील्ड पर क्लिक करके, यूटिलिटी पैनल को दिखाने, कनेक्शंस इंस्पेक्टर पर क्लिक करके, प्रतिनिधि को आउटलेट पर व्यू कंट्रोलर पर क्लिक करके स्टोरीबोर्ड में प्रतिनिधि को लागू कर सकते हैं।
गुप्‍तोन

1
आपका टेक्स्टफ़िल्डशोल्डर रीटर्न विधि कहाँ लागू की गई है? आपको उस वर्ग को UITextField का प्रतिनिधि बनना होगा। प्रतिनिधि कॉलबैक केवल उस वर्ग से फायर करेगा जो प्रतिनिधि के रूप में सेट है, और यदि वर्ग ने इसे लागू किया है।
सिड

1
क्या आपने यह शीर्षक में UITextFieldDelegate के अनुरूप MyViewController निर्धारित किया है?
सिड

1
जब तक myTextField सही ढंग से आवंटित किया गया है और शून्य नहीं है। तकनीकी रूप से, यह ठीक है अगर यह शून्य (कोई दुर्घटना नहीं है) लेकिन फिर वह कुछ भी नहीं करेगा :)
सिड

1
और अगर मैं जोड़ सकते हैं, यह नहीं बात अगर आप सिर्फ एक प्रयोग कर रहे हैं करता ओवरराइड ऐसे UIFloatLabelTextField के रूप में, UITextField वर्ग, आप अभी भी yourTextField.delegate = स्वयं की जरूरत है; !!!
गेली एन

19

UITextFieldDelegate पद्धति को इस तरह लागू करें:

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


6

आपके UITextFields में एक प्रतिनिधि ऑब्जेक्ट (UITextFieldDelegate) होना चाहिए। कीबोर्ड को गायब करने के लिए अपने प्रतिनिधि में निम्नलिखित कोड का उपयोग करें:

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

अब तक काम करना चाहिए ...


अरे दोस्त, मैंने वही किया है जो आपने ऊपर कहा है लेकिन मैं अभी भी कीबोर्ड को गायब नहीं कर सकता। आपके पास कोई विचार है? धन्यवाद।
कु। गोंडा

हे क्रिस, यह सब अब हल है। धन्यवाद।
कु। गोंडा

6

मुझे कुछ परीक्षण दिया, एक ही मुद्दा था, यह मेरे लिए काम किया:

अपनी वर्तनी की जाँच करें -

(BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];

मैंने "F" ... और बिंगो के textFieldबजाय textfield, मेरा सही किया !! इसने काम कर दिया..


4

जब वापसी कुंजी दबाया जाता है, तो कॉल करें:

[uitextfield resignFirstResponder];

हे कोनोर, रिटर्न की को दबाए जाने पर ऐप को कैसे पता चलता है? धन्यवाद।
कु। गोंडा

3

काफी समय के बाद किसी चीज़ का शिकार करना, जो समझ में आता है, यह वही है जो मैंने एक साथ रखा और यह एक आकर्षण की तरह काम करता है।

//
//  ViewController.h
//  demoKeyboardScrolling
//
//  Created by Chris Cantley on 11/14/13.
//  Copyright (c) 2013 Chris Cantley. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController <UITextFieldDelegate>

// Connect your text field to this the below property.
@property (weak, nonatomic) IBOutlet UITextField *theTextField;

@end

।म

//
//  ViewController.m
//  demoKeyboardScrolling
//
//  Created by Chris Cantley on 11/14/13.
//  Copyright (c) 2013 Chris Cantley. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController



- (void)viewDidLoad
{
    [super viewDidLoad];
    // _theTextField is the name of the parameter designated in the .h file. 
    _theTextField.returnKeyType = UIReturnKeyDone;
    [_theTextField setDelegate:self];

}

// This part is more dynamic as it closes the keyboard regardless of what text field 
// is being used when pressing return.  
// You might want to control every single text field separately but that isn't 
// what this code do.
-(void)textFieldShouldReturn:(UITextField *)textField
{
    [textField resignFirstResponder];
}


@end

उम्मीद है की यह मदद करेगा!


3

UITextField के प्रतिनिधि को अपने ViewController पर सेट करें, फ़ाइल के स्वामी और UITextField के बीच एक संदर्भ आउटलेट जोड़ें, फिर इस विधि को लागू करें:

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

3

पूर्व-परिभाषित वर्ग के बजाय इसे जोड़ें

class ViewController: UIViewController, UITextFieldDelegate {

कीबोर्ड के बाहर क्लिक करने पर कीबोर्ड को हटाने के लिए

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
        self.view.endEditing(true)
    }

और जब एंटर दबाया जाए तो कीबोर्ड हटाने के लिए

इस लाइन को viewDidLoad में जोड़ें ()

inputField उस टेक्स्ट का नाम है जिसका उपयोग किया गया है।

self.inputField.delegate = self

और इस फ़ंक्शन को जोड़ें

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

2

स्विफ्ट 2:

यह वही है जो हर काम करने के लिए किया जाता है!

Doneबटन के साथ करीब कीबोर्ड या Touch outSide, Nextअगले इनपुट पर जाएं।

पहले बदलें TextFiled Return KeyTo NextStoryBoard में।

override func viewDidLoad() {
  txtBillIdentifier.delegate = self
  txtBillIdentifier.tag = 1
  txtPayIdentifier.delegate  = self
  txtPayIdentifier.tag  = 2

  let tap = UITapGestureRecognizer(target: self, action: "onTouchGesture")
  self.view.addGestureRecognizer(tap)

}

func textFieldShouldReturn(textField: UITextField) -> Bool {
   if(textField.returnKeyType == UIReturnKeyType.Default) {
       if let next = textField.superview?.viewWithTag(textField.tag+1) as? UITextField {
           next.becomeFirstResponder()
           return false
       }
   }
   textField.resignFirstResponder()
   return false
}

func onTouchGesture(){
    self.view.endEditing(true)
}

टैग का उपयोग करना सेब द्वारा स्पष्ट रूप से हतोत्साहित करता है। आप इसके बजाय एक IBOutletCollection का उपयोग कर सकते हैं
Antzi

2

स्विफ्ट में आपको UITextfieldDelegate को सौंपना चाहिए , यह महत्वपूर्ण है कि इसे मत भूलिए , व्यू कंट्रोलर में जैसे:

class MyViewController: UITextfieldDelegate{

     mytextfield.delegate = self

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

0

आप uiTextField के लिए एक आईबीएशन जोड़ सकते हैं (रिटेंशन इवेंट "डिड एंड ऑन एक्जिट" है), और आईबीएएक्शन को HideKeyboard नाम दिया जा सकता है,

-(IBAction)hideKeyboard:(id)sender
{
    [uitextfield resignFirstResponder];
}

इसके अलावा, आप इसे अन्य टेक्स्टफ़िल्ड या बटन पर भी लागू कर सकते हैं, उदाहरण के लिए, आप कीबोर्ड पर छिपाने के लिए इसे छिपा हुआ बटन जोड़ सकते हैं।


0

आप इस UITextfield उपवर्ग को आज़मा सकते हैं जिसे आप पाठ के लिए एक शर्त सेट कर सकते हैं कि वह UIReturnKey को गतिशील रूप से कैसे बदल सकता है:
https://github.com/codeinteractiveapps/OBReturnKeyTextField


कृपया अपना उत्तर बताएं और लिंक से पोस्ट तक संबंधित हिस्से को कॉपी करें।
रोहित गुप्ता

0

यदि आप अलर्ट बॉक्स टेक्स्टफिल्ड पर लिखते समय कीबोर्ड गायब करना चाहते हैं

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