ocultar el teclado para el campo de texto en un lenguaje de progtwigción rápido

Tengo poca experiencia en Objective-C. Quiero ocultar el teclado para un campo de texto usando el lenguaje de progtwigción Swift.

También intenté esto

func textFieldShouldReturn(textField: UITextField!) -> Bool // called when 'return' key pressed. return NO to ignore. { return true; } 

Pero el método no se activa cuando presiono regresar. Alguien tiene algo de suerte con esto?

Creo que el problema está en configurar el delegado.

Establezca el campo de texto Delegar en su ViewController como este

 class ViewController: UIViewController,UITextFieldDelegate { 

y luego crea IBOutlet para tu campo de texto como este

 @IBOutlet var txtTest : UITextField = nil 

asegúrese de que esté conectado a su campo de texto en su vista en el guión gráfico.

finalmente configurar su Delegado usando

 txtTest.delegate=self 

Casi terminamos. Ahora coloca esta función de delegado en tu clase.

 func textFieldShouldReturn(textField: UITextField!) -> Bool // called when 'return' key pressed. return NO to ignore. { textField.resignFirstResponder() return true; } 

Espero que esto solucione tu problema.

Simplemente anule el método UIViewController llamado “touchesBegan” y establezca endEditing en verdadero. Solo así:

 override func touchesBegan(touches: NSSet!, withEvent event: UIEvent!) { self.view.endEditing(true) } 

Para ocultar el teclado cuando presiona un botón, necesita usar la siguiente función.

 self.view.endEditing(true) 

Esto funciona cuando se presiona un botón.

Espero que esto ayude a alguien por ahí.

Aquí vamos:

  1. Agrega un campo de texto a tu vista
  2. Crea un nuevo archivo Swift
  3. Establezca este nuevo archivo como una clase para esa vista en particular
  4. Agregue un TextField a su vista
  5. Crea un Outlet para el campo de texto (¡mi nombre es “txtField”!)
  6. Sustituya cualquier código en el archivo Swift Class con esto:

     import Foundation import UIKit //01 create delegation class MyViewController2: UIViewController,UITextFieldDelegate { @IBOutlet weak var txtField: UITextField!=nil override func viewDidLoad() { super.viewDidLoad() // additional setup after loading the view //02 set delegate to textfield txtField.delegate = self } //03 textfield func for the return key func textFieldShouldReturn(textField: UITextField) -> Bool { txtField.resignFirstResponder() return true; } //textfield func for the touch on BG override func touchesBegan(touches: NSSet, withEvent event: UIEvent) { txtField.resignFirstResponder() self.view.endEditing(true) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() //dispose of any resources that can be recreated } } 
    1. Pruébalo, sé feliz y di gracias.
  • Agregue UITextFieldDelegate a la statement de clase:

    ViewController de clase: UIViewController, UITextFieldDelegate

  • Conecte el campo de texto o escríbalo mediante progtwigción

    @IBOutlet weak var userText: UITextField!

  • configure su controlador de vista como cargan los campos de texto delegates en la vista:

     override func viewDidLoad() { super.viewDidLoad() self.userText.delegate = self } 
  • Agregue la siguiente función

     func textFieldShouldReturn(userText: UITextField!) -> Bool { userText.resignFirstResponder() return true; } 

    con todo esto, su teclado comenzará a tocarse tocando fuera del campo de texto y presionando la tecla de retorno.

Como dijo @spfursich, la mejor manera es cuando el usuario toque en cualquier lugar sobre el teclado, el teclado desaparecerá. Aquí está el código:

 override func viewDidLoad() { super.viewDidLoad() var tap:UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "DismissKeyboard") self.view.addGestureRecognizer(tap) } func DismissKeyboard(){ self.view.endEditing(true) } 

De manera simple para ocultar el teclado, simplemente anule el “método TouchBegan” de UIView. Entonces, cuando tocas en cualquier parte del teclado de la vista, se oculta. aquí está el código de muestra … (Código actualizado de Swift 3.0)

 override func touchesBegan(_ touches: Set, with event: UIEvent?) { self.view.endEditing(true) } 

Primero necesita configurar delegate para su campo de texto, entonces necesita incluir resignFirstResponder() para ocultar el teclado cuando presione el botón de retorno de keybaord.

  func textFieldShouldReturn(textField: UITextField!) -> Bool // called when 'return' key pressed. return NO to ignore. { textField .resignFirstResponder() return true; } 

Puede probar este código para que la clave “return” ejecute el código.

 func textFieldShouldReturn(textField: UITextField) -> Bool{ textField.resignFirstResponder() performAction() return true; } func performAction(){ //execute code for your action inside this function } 

Espero que esto le pueda ayudar.

También puede hacer esto: agregue el evento “Did end at exit” del inspector de conexiones de su TextField y conéctelo al método del ViewController relevante

En mi ejemplo, lo conecto al método llamado ‘terminado’

declarar remitente como UITextField y luego llamar a sender.resignFirstResponder (); Me gusta esto:

 @IBAction func ended (sender: UITextField){ sender.resignFirstResponder(); } 

Aquí he resuelto el problema, que cuando se abre el teclado y la vista se oculta detrás del teclado … en ese momento tenemos que cambiar las restricciones de la interfaz de usuario de forma dinámica para que toda la vista sea visible. En mi caso, estoy cambiando dinámicamente la restricción de contexto del UITextField .

Entonces, aquí va el código completo. Tengo un UITextView y UITextField en UIViewController para trabajar en solo probar …

 import UIKit class ViewController: UIViewController, UITextViewDelegate, UITextFieldDelegate { @IBOutlet weak var textView: UITextField! @IBOutlet weak var textField: UITextView! /*Height Constraint for textField*/ @IBOutlet weak var bottom: NSLayoutConstraint! var defaultHeight:CGFloat = 0.0; override func viewDidLoad() { super.viewDidLoad() defaultHeight = bottom.constant; NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillShow:"), name:UIKeyboardWillShowNotification, object: nil); NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillHide:"), name:UIKeyboardWillHideNotification, object: nil); } override func resignFirstResponder() -> Bool { textView.resignFirstResponder(); textField.resignFirstResponder(); return true; } override func touchesBegan(touches: Set, withEvent event: UIEvent?) { resignFirstResponder() print("touched began") } func textViewDidEndEditing(textView: UITextView) { resignFirstResponder() print("text view did end editing") } func textViewShouldEndEditing(textView: UITextView) -> Bool { resignFirstResponder() print("text view should end editing") return true; } func textFieldShouldReturn(textField: UITextField) -> Bool { print("text field should return") resignFirstResponder() return true; } func textFieldDidEndEditing(textField: UITextField) { resignFirstResponder() print("did end editing") } func keyboardWillShow(notification: NSNotification) { print("keyboard will show.............") if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue() { let a = keyboardSize.height; self.bottom.constant = a + defaultHeight; self.view.updateConstraints(); } } func keyboardWillHide(nofication:NSNotification) { print("keyboard will hide................") bottom.constant = defaultHeight; self.view.updateConstraints(); } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } } 
 UIApplication.sharedApplication().sendAction(#selector(UIResponder.resignFirstResponder), to:nil, from:nil, forEvent:nil) 

Ahora en Swift 3, los métodos más fáciles son

Método 1: se llama cuando se pulsa la tecla ‘retorno’.

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

Método 2: se llama cuando se pulsa la tecla ‘retorno’.

 func textFieldShouldReturn(_ textField: UITextField) -> Bool { self.view.endEditing(true) return true; } 

Método 3: Global Method Write in view se cargó

 self.view.addGestureRecognizer(UITapGestureRecognizer(target: self.view, action: #selector(UIView.endEditing(_:)))) 

Nota: No te olvides de agregar esto. De lo contrario, no es trabajo.

 UIGestureRecognizerDelegate, UITextFieldDelegate 

Espero que funcione para ti 🙂