traba teclado sale puedo problemas funciona escribir con activa ios swift uitextfield

ios - sale - problemas con el teclado en whatsapp



¿Cómo ocultar el teclado rápidamente presionando la tecla de retorno? (15)

Estoy utilizando UITextfied mientras UITextfied clic en el teclado textfied aparece pero cuando presioné la tecla de retorno, el teclado no está desapareciendo. Utilicé el siguiente código.

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

el método resignfirstresponder no entra en funcionamiento.


Rápido

Usando la función opcional de UITextFieldDelegate .

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

false significa que el campo puede solicitar la renuncia. true - fuerza renunciar.


@RSC

para mí la adición crítica en Xcode Version 6.2 (6C86e) está en la override func viewDidLoad()

self.input.delegate = self;

Intenté hacer que funcione con la tecla de retorno durante horas hasta que encontré tu publicación, RSC. ¡Gracias!

Además, si desea ocultar el teclado, toque cualquier otro lugar en la pantalla:

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


Aquí está la actualización de Swift 3.0 al comentario de peacetype:

textField.addTarget(nil, action:Selector(("firstResponderAction:")), for:.editingDidEndOnExit)


Asegúrese de que su delegado textField esté configurado en el controlador de vista desde donde está escribiendo su código relacionado con el campo de texto.

self.textField.delegate = self


Cuando el usuario toca el botón Hecho en el teclado de texto, se generará un evento ¿Terminó al salir? en ese momento, necesitamos decirle al campo de texto que pierda el control para que el teclado desaparezca. Para hacer eso, necesitamos agregar un método de acción a nuestra clase de controlador. Seleccione ViewController.swift agregue el siguiente método de acción:

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

Seleccione Main.storyboard en Project Navigator y abra el inspector de conexiones. Arrastre desde el círculo al lado de Did End On Exit al ícono amarillo View Controller en el guión gráfico y suéltelo. Aparecerá un pequeño menú emergente que contiene el nombre de una acción única, la que acabamos de agregar. Haga clic en la acción textFieldDoneEditing para seleccionarla y ya está.


En el controlador de vista que está utilizando:

//suppose you are using the textfield label as this @IBOutlet weak var emailLabel: UITextField! @IBOutlet weak var passwordLabel: UITextField! //then your viewdidload should have the code like this override func viewDidLoad() { super.viewDidLoad() self.emailLabel.delegate = self self.passwordLabel.delegate = self } //then you should implement the func named textFieldShouldReturn func textFieldShouldReturn(_ textField: UITextField) -> Bool { textField.resignFirstResponder() return true } // -- then, further if you want to close the keyboard when pressed somewhere else on the screen you can implement the following method too: override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { self.view.endEditing(true); }


La parte de retorno verdadera de esto solo le dice al campo de texto si está permitido o no regresar. Tiene que indicar manualmente el campo de texto para descartar el teclado (o cualquiera que sea su primera respuesta), y esto se hace a través de una llamada a resignFirstResponder() .

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


Me gustaría iniciar la clase de RSC:

import Foundation import UIKit // Don''t forget the delegate! class ViewController: UIViewController, UITextFieldDelegate { required init(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } @IBOutlet var myTextField : UITextField? override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. self.myTextField.delegate = self; } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } func textFieldShouldReturn(textField: UITextField!) -> Bool { self.view.endEditing(true); return false; }

}


Otra forma de hacerlo, que utiliza principalmente el guión gráfico y le permite fácilmente tener múltiples campos de texto, es:

@IBAction func resignKeyboard(sender: AnyObject) { sender.resignFirstResponder() }

Conecte todos los campos de texto para ese controlador de vista a esa acción en el evento Did End On Exit de cada campo.


Para obtener el cierre automático del teclado, coloco este código dentro de uno de los métodos de la clase de mi campo de texto personalizado:

textField.addTarget(nil, action:"firstResponderAction:", forControlEvents:.EditingDidEndOnExit)

Sustituya el nombre de su outlet por textField .


Puede hacer que la aplicación cierre el teclado con la siguiente función

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

Aquí hay un ejemplo completo para ilustrar mejor eso:

// // ViewController.swift // // import UIKit class ViewController: UIViewController, UITextFieldDelegate { @IBOutlet var myTextField : UITextField override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. self.myTextField.delegate = self; } func textFieldShouldReturn(_ textField: UITextField) -> Bool { self.view.endEditing(true) return false } }

Fuente del código: http://www.snip2code.com/Snippet/85930/swift-delegate-sample


Solución simple de Swift 3: agregue esta función a sus controladores de vista que cuentan con un campo de texto:

@IBAction func textField(_ sender: AnyObject) { self.view.endEditing(true); }

A continuación, abra su editor asistente y asegúrese de que su Main.storyboard esté en un lado de su vista y que el archivo view.twift view view esté en el otro. Haga clic en un campo de texto y luego seleccione en el panel de utilidades del lado derecho la pestaña ''Mostrar inspector de conexiones''. Controla el arrastre desde ''End End on Exit'' a la función anterior en tu archivo rápido. Repita para cualquier otro campo de texto en esa escena y enlace a la misma función.


Swift 3

Agregue este código a continuación a su VC

//hide keyboard when user tapps on return key on the keyboard func textFieldShouldReturn(_ textField: UITextField) -> Bool { self.view.endEditing(true); return false; }

Funciona para mi


puedes poner esto en cualquier lugar pero no en un UIButton

func TextFieldEndEditing(text fiend name: UITextField!) -> Bool { return (false) }

entonces puedes poner este código en un botón (también por ejemplo):

self.view.endEditing(true)

esto funcionó para mí


  • Agregue UITextFieldDelegate a la declaración de clase:

    class ViewController: UIViewController, UITextFieldDelegate

  • Conecte el campo de textfield o escríbalo mediante programación

    @IBOutlet weak var userText: UITextField!

  • configure su controlador de vista como cargan los campos de texto delegados 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.