textfielddidchange changed change swift uitextfielddelegate

textfielddidchange - uitextfield editing changed swift



Rápido cómo renunciar al primer respondedor en todos los uiTextfield (6)

Me gustaría usar resignar el primer respondedor en todos los uitextfield . Puedo completar esto colocando los uitextfields en una matriz, pero quería evitar usar la matriz. la renuncia debe suceder a todo tipo de uiTextField cómo se puede hacer esto.

Esto funciona bien

class ViewController: UIViewController, UITextFieldDelegate { @IBOutlet weak var text: UITextField! @IBOutlet weak var textFieldtwo: UITextField! var textField = [UITextField]() override func viewDidLoad() { super.viewDidLoad() self.textField = [text,textFieldtwo] for item in textField { item.delegate = self } } override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { print("text") for item in textField { item.resignFirstResponder() } } }


resignFirstResponder con botones de barras de herramientas Swift4 ##

Puede intentar esto: 1. marque el campo de texto delegado
class CoursesViewController: UIViewController,UITextFieldDelegate {

  1. crea un campo de texto var: var currentTextField:UITextField!

  2. cree los botones "hecho" y "cancelar" en la barra de herramientas de su TextField

    func addDoneCancel(_ textField : UITextField) { curentTextField = textField // ToolBar let toolBar = UIToolbar() toolBar.barStyle = .default toolBar.isTranslucent = true toolBar.tintColor = UIColor(red: 92/255, green: 216/255, blue: 255/255, alpha: 1) toolBar.sizeToFit() // Adding Button ToolBar let doneButton = UIBarButtonItem(title: "Done", style: .plain, target: self, action: #selector(CoursesViewController.doneClick)) let spaceButton = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil) let cancelButton = UIBarButtonItem(title: "Cancel", style: .plain, target: self, action: #selector(CoursesViewController.cancelClick)) toolBar.setItems([cancelButton, spaceButton, doneButton], animated: false) toolBar.isUserInteractionEnabled = true textField.inputAccessoryView = toolBar }

4. Acciones de los botones de la barra de herramientas.

@objc func doneClick(){ curentTextField.resignFirstResponder() } @objc func cancelClick(){ curentTextField.resignFirstResponder() }

5. delegado de UItextField

func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool { curentTextField = textField addDoneCancel(textField) return true } func textFieldDidBeginEditing(_ textField: UITextField) { //delegate method } func textFieldShouldEndEditing(_ textField: UITextField) -> Bool { //delegate method return true } func textFieldShouldReturn(_ textField: UITextField) -> Bool { //delegate method textField.resignFirstResponder() return true }


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: carga global del método en vista

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

Nota: No olvides añadir esto. Por otro lado no funciona.

UIGestureRecognizerDelegate, UITextFieldDelegate

Espero que funcione para ti :)


O simplemente utilice un enfoque más global. (Swift 3.0)

UIApplication.shared.sendAction(#selector(UIApplication.resignFirstResponder), to: nil, from: nil, for: nil);

Esto descartará cualquier campo activo ya que renuncia al primer respondedor actual. ¡Buena suerte programando!


Puedes probar esto:

for textField in self.view.subviews where textField is UITextField { textField.resignFirstResponder() }

Pero si solo desea descartar el teclado, presione la tecla de return en el keyboard o toque en cualquier lugar de la pantalla sin usar touchesBegan

Puedes probar con esto:

// For pressing return on the keyboard to dismiss keyboard func textFieldShouldReturn(textField: UITextField) -> Bool { for textField in self.view.subviews where textField is UITextField { textField.resignFirstResponder() } return true }

...

func hideKeyboard() { view.endEditing(true) }

Y agregue esto a su viewDidLoad :

let tapGesture = UITapGestureRecognizer(target: self, action: #selector(hideKeyboard)) view.addGestureRecognizer(tapGesture)


Un enfoque más simple sería terminar la edición en UIView que contiene los UITextFields diciendo:

view.endEditing(true)


Swift 4:

En caso de tener IBOutlets:

_ = [textFiledOne, textFiledTwo, textFiledThree].map() { $0.resignFirstResponder() }