ios - botones - textfielddidchange swift 4




Cambie la función del botón 'Volver' a 'Hecho' en swift en UITextView (2)

Me gustaría deshacerme de la función de "retorno" del teclado mientras el usuario está escribiendo, así que no hay nuevas líneas, por lo que me gustaría que la tecla "regresar" funcionara como "Hecho" para que ocultara el teclado. .

Estoy utilizando un UITextView, que es editable, por lo que el usuario puede escribir su publicación y publicarla en la línea de tiempo principal, pero como tengo celdas fijas, no quiero que el usuario pueda presionar 'regresar' y su publicación estaría fuera del alcance de la línea de tiempo.

Encontré esto que funciona con UITextField, pero no con UITextView:

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

Así que solo quería saber si hay una forma de hacerlo en un UITextView, o al menos poder ocultar el teclado si se pulsa regresar, en lugar de crear una nueva línea.


Puede establecer el tipo de clave de retorno del campo de texto:

textField.returnKeyType = UIReturnKeyType.Done

Actualización Definitivamente, puede usar el mismo enfoque para establecer la clave de retorno en "Listo", como se mencionó anteriormente. Sin embargo, UITextView no proporciona una devolución de llamada cuando el usuario pulsa la tecla de retorno. Como solución alternativa, puede intentar controlar la llamada delegada textView (textView: UITextView, shouldChangeTextInRange: NSRange, replacementText text: String), y descartar el teclado cuando detecte la entrada de un nuevo carácter de línea:

func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {
    if (text == "\n") {
        textView.resignFirstResponder()
    }
    return true
}

He probado muchos códigos y, finalmente, esto me funcionó en Swift 3.0 Última [marzo de 2017], esto se logró con el uso de UITextFields

La clase "ViewController" debe heredarse del "UITextFieldDelegate" para que este código funcione.

class ViewController: UIViewController,UITextFieldDelegate  

Agregue el campo Texto con el número de etiqueta adecuado y este número de etiqueta se usa para llevar el control al campo de texto apropiado en función del número de etiqueta incremental que se le asigna.

override func viewDidLoad() {

    userNameTextField.delegate = self
    userNameTextField.tag = 0
    userNameTextField.returnKeyType = .next
    passwordTextField.delegate = self
    passwordTextField.tag = 1
    passwordTextField.returnKeyType = .go
}

En el código anterior, el "returnKeyType = UIReturnKeyType.next", donde hará que la tecla de retorno del teclado se muestre como "Siguiente", también tiene otras opciones como "Unirse / Ir", etc., según la aplicación que cambie los valores.

Este "textFieldShouldReturn" es un método de UITextFieldDelegate controlado y aquí tenemos la siguiente selección de campo basada en el incremento del valor de la etiqueta.

func textFieldShouldReturn(_ textField: UITextField) -> Bool
{
    if let nextField = textField.superview?.viewWithTag(textField.tag + 1) as? UITextField {
        nextField.becomeFirstResponder()
    } else {
        textField.resignFirstResponder()
        return true;
    }
    return false
}




cocoa-touch