iphone ios ios5 uitextfield xcode4.3

iphone - Detectar cambio de enfoque para UITextField



ios ios5 (4)

En Swift 4:

  1. Implemente UITextFieldDelegate en su clase ViewController
  2. Agregue las salidas para los textFields que desea detectar el enfoque
  3. Implemente la función textFieldDidBeginEditing (en caso de que desee recibir una notificación sobre esa acción específica, consulte la documentación de Apple ) y rellénela con su código
  4. En viewDidLoad() asigne su clase ViewController como delegado para el campo de textField que agregó anteriormente en el paso 2

Debe parecerse a:

class ViewController: UIViewController, UITextFieldDelegate { @IBOutlet weak var yourTextField: UITextField! func textFieldDidBeginEditing(_ textField: UITextField) { // Your code here } override func viewDidLoad() { super.viewDidLoad() yourTextField.delegate = self } ... }

Estoy tratando de configurar la animación para que la vista se mueva hacia arriba cuando el teclado se oculta y aparece en los campos de texto, y funcionó perfectamente bien, pero cuando el enfoque se mueve de un campo de texto a otro, no funciona. ya que el teclado ya estaba mostrado.

En viewDidLoad, registré lo siguiente:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];

y luego en los métodos keyboardWillShow y keyboardWillHide, determina si la vista debería moverse o no y animarse en consecuencia. Pero si ya se mostró un teclado y el usuario hace clic en otro campo de texto que necesita que la vista se mueva hacia arriba, no se llamará al método. ¿Hay alguna forma de detectar si se ha cambiado el enfoque a otro campo de texto cuando ya se mostró el teclado? Sería genial si hubiera una manera de hacerlo sin tener que configurar todos los campos de texto para delegados.

Gracias por adelantado.


Use los métodos de delegado de UITextField . Es mejor en su caso que los métodos de teclado. Cuando textField enfocó el - (void)textFieldDidBeginEditing:(UITextField *)textField; se disparará ... y cuando se pierda el foco - (void)textFieldDidEndEditing:(UITextField *)textField; será despedido


Utilice UITextFieldDelegate

y

func textFieldDidBeginEditing(textField: UITextField) { println("did") if textField.tag == 1{ self.txtFullName.layer.borderColor = UIColor.blueColor().CGColor } }


-(BOOL)textFieldShouldBeginEditing:(UITextField*)textField { if (textField.tag == 1) { //first textField tag //textField 1 } else { //textField 2 } }