Al hacer clic en un campo de texto, aparece el teclado. ¿Cómo lo oculto cuando el usuario presiona la tecla de retorno?
Al hacer clic en un campo de texto, aparece el teclado. ¿Cómo lo oculto cuando el usuario presiona la tecla de retorno?
Respuestas:
Primero haga que su delegado de archivos para UITextField
@interface MYLoginViewController () <UITextFieldDelegate>
@end
Luego agregue este método a su código.
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
También agregue self.textField.delegate = self;
En viewDidLoad
declarar:
[yourTextField setDelegate:self];
Luego, incluya la anulación del método delegado:
-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
setDelegate:
recordatorio. Definitivamente lo había olvidado y el código no funcionaba anteriormente.
Prueba esto en Swift ,
Paso 1: establezca delegado como uno mismo para sutextField
textField.delegate = self
Paso 2: Agregue este UITextFieldDelegate debajo de su declaración de clase,
extension YourClassName: UITextFieldDelegate {
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
}
En swift, haga lo siguiente:
Primero en su ViewController
implementación, esto UITextFieldDelegate
por ejemplo.
class MyViewController: UIViewController, UITextFieldDelegate {
....
}
Ahora agregue un delegado a uno TextField
en el que desea descartar el teclado cuando se toca regresar, ya sea en el viewDidLoad
método como a continuación o donde lo está inicializando. Por ej.
override func viewDidLoad() {
super.viewDidLoad()
myTextField.delegate = self
}
Ahora agregue este método.
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
Prueba esto,
[textField setDelegate: self];
Luego, en el método delegado textField
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
establecer delegado de UITextField
, y over-ride, textFieldShouldReturn
método, en ese método simplemente escriba las siguientes dos líneas:
[textField resignFirstResponder];
return YES;
Eso es. Antes de escribir un código, no olvide establecer delegado de a UITextField
y establecer el tipo de clave de retorno en "Listo" desde la ventana de propiedades (comando + shift + I).
Puede conectar "Acción primaria activada" (haga clic con el botón derecho en UITextField) con un IBAction y puede renunciar al primer respondedor (sin delegación). Ejemplo (Swift 4):
@IBAction func textFieldPrimaryAction(_ sender: UITextField) {
sender.resignFirstResponder()
...
}
Establezca delegado de UITextField
in view controller field.delegate = self
, y luego:
extension ViewController: UITextFieldDelegate {
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
// don't force `endEditing` if you want to be asked for resigning
// also return real flow value, not strict, like: true / false
return textField.endEditing(false)
}
}
Si desea ocultar el teclado para un uso particular del teclado
[self.view resignFirstResponder];
Si desea ocultar cualquier teclado de la vista, use[self.view endEditing:true];
Ok, creo que para un novato las cosas pueden ser un poco confusas. Creo que la respuesta correcta es una mezcla de todo lo anterior, al menos en Swift4.
Cree una extensión o use el ViewController en el que desea usar esto, pero asegúrese de implementar UITextFieldDelegate. Por razones de reutilización, encontré que era más fácil usar una extensión:
extension UIViewController : UITextFieldDelegate {
...
}
pero la alternativa también funciona:
class MyViewController: UIViewController {
...
}
Agregue el método textFieldShouldReturn (dependiendo de su opción anterior, ya sea en la extensión o en su ViewController)
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
return textField.endEditing(false)
}
En su método viewDidLoad, establezca el delegado del campo de texto en self
@IBOutlet weak var myTextField: UITextField!
...
override func viewDidLoad() {
..
myTextField.delegte = self;
..
}
Eso debería ser todo. Ahora, cuando presiona return
el textFieldShouldReturn
debería ser llamado.
Defina esta clase y luego configure su campo de texto para usar la clase y esto automatiza todo el teclado oculto cuando se presiona el retorno automáticamente.
class TextFieldWithReturn: UITextField, UITextFieldDelegate
{
required init?(coder aDecoder: NSCoder)
{
super.init(coder: aDecoder)
self.delegate = self
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool
{
textField.resignFirstResponder()
return true
}
}
Entonces, todo lo que necesita hacer en el guión gráfico es configurar los campos para usar la clase: