Estoy usando UITextfied
mientras hago clic en el teclado textfied aparece pero cuando presioné la returntecla, el teclado no está desapareciendo. Use 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 está funcionando.
ios
swift
uitextfield
Ashwinkumar Mangrulkar
fuente
fuente
Respuestas:
Puede hacer que la aplicación descarte el teclado usando la siguiente función
Aquí hay un ejemplo completo para ilustrar mejor eso:
Fuente del código: http://www.snip2code.com/Snippet/85930/swift-delegate-sample
fuente
UITextFieldDelegate
!func textFieldShouldReturn(textField: UITextField) -> Bool {
cambia afunc textFieldShouldReturn(_ textField: UITextField) -> Bool {
La
return true
parte de esto solo le dice al campo de texto si está permitido regresar o no.Debe decirle manualmente al campo de texto que descarte el teclado (o cualquiera que sea su primer respondedor), y esto se hace de la siguiente
resignFirstResponder()
manera:fuente
UITextFieldDelegate
?Agregar
UITextFieldDelegate
a la declaración de clase:Conéctelo
textfield
o escríbalo mediante programaciónconfigure su controlador de vista ya que los campos de texto delegados en la vista se cargaron:
Agregue la siguiente función
Con todo esto, su teclado comenzará a descartarse tocando fuera del campo de texto y presionando la tecla de retorno.
fuente
UITextFieldDelegate
... muchas gracias!Swift 4.2 - No se necesita delegado
Puede crear una salida de acción desde UITextField para la " Acción principal activada " y renunciar al primer respondedor en el parámetro del remitente que se pasa:
Súper simple
(Gracias al video de 60 segundos de Scott Smith por informarme sobre esto: https://youtu.be/v6GrnVQy7iA )
fuente
Solución simple de Swift 3: agregue esta función a sus controladores de vista que cuentan con un campo de texto:
Luego abra su editor asistente y asegúrese de que su Main.storyboard esté en un lado de su vista y que el archivo de controlador de vista deseado.swift esté en el otro. Haga clic en un campo de texto y luego seleccione en la pestaña 'Mostrar el Inspector de conexiones' del panel de utilidades del lado derecho. Controle el arrastre desde 'Terminó al salir' a la función anterior en su archivo rápido. Repita para cualquier otro campo de texto en esa escena y enlace a la misma función.
fuente
@RSC
para mí, la adición crítica en Xcode Versión 6.2 (6C86e) está en
override func viewDidLoad()
Intenté que funcionara con la tecla de retorno durante horas hasta que encontré tu publicación, RSC. ¡Gracias!
Además, si desea ocultar el teclado si toca en cualquier otro lugar de la pantalla:
fuente
Para obtener el descarte automático del teclado, pongo este código dentro de uno de los métodos de la clase de mi campo de texto personalizado:
Sustituya el nombre de su outlet por
textField
.fuente
mytextfield.addTarget(nil, action:Selector(("firstResponderAction:")), for:.editingDidEndOnExit)
(versión Swift 5)viewDidLoad
pero no funcionó ni regresar ni tocar en algún lugar fuera del campo de texto. Obtuve los campos de texto creando una salida cada uno.viewDidAppear
método de esa clase.UIAlertController.addTextField(configurationHandler: {(textField: UITextField!) in textField.delegate = self textField.addTarget(self, action: #selector(MySubclass.textChanged(_:)), for: .editingChanged) })
Esto podría ser demasiado específico para mi caso, pero espero que ayude. Intente hacer la llamada dentroviewDidAppear
y conforme a los delegados si es necesario.Otra forma de hacerlo que utiliza principalmente el guión gráfico y le permite fácilmente tener múltiples campos de texto es:
Conecte todos sus campos de texto para ese controlador de vista a esa acción en el
Did End On Exit
evento de cada campo.fuente
Yo sugeriría iniciar la clase desde RSC:
}
fuente
Cuando el usuario toca el botón Listo en el teclado de texto, se generará un evento Did End On Exit; en ese momento, necesitamos decirle al campo de texto que ceda 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 y agregue el siguiente método de acción:
Seleccione Main.storyboard en el Navegador de proyectos y abra el inspector de conexiones. Arrastre desde el círculo al lado de Did End On Exit al icono amarillo del Controlador de vista en el guión gráfico y suéltelo. Aparecerá un pequeño menú emergente que contiene el nombre de una sola acción, la que acabamos de agregar. Haga clic en la acción textFieldDoneEditing para seleccionarla y listo.
fuente
Aquí está la actualización de Swift 3.0 al comentario de peacetype:
fuente
Odio agregar la misma función a cada UIViewController. Al extender UIViewController para admitir UITextFieldDelegate, puede proporcionar un comportamiento predeterminado de "retorno presionado".
Cuando crea nuevos UIViewController y UITextField, todo lo que tiene que hacer es escribir un código de línea en su UIViewController.
Incluso puede omitir este código de línea conectando delegado en Main.storyboard. (Usando "ctrl" y arrastre de UITextField a UIViewController)
fuente
Swift 3
Agregue este código a continuación a su VC
Funciona para mi
fuente
Asegúrese de que su delegado textField esté configurado en el controlador de vista desde el que está escribiendo su código relacionado con el campo de texto.
fuente
Rápido
Usando la función opcional de
UITextFieldDelegate
.false
significa que se le puede pedir a ese campo que renuncie.true
- forzar la renuncia.fuente
entonces usas esta función
fuente
puedes poner esto en cualquier lugar pero no en un UIButton
entonces puedes poner este código en un botón (también, por ejemplo):
esto funcionó para mí
fuente
En el controlador de vista que está utilizando:
fuente
debe conectar el UITextfied con un delegado del controlador de vista para hacer que esta función se llame
fuente
Todo en uno Ocultar teclado y mover vista al abrir teclado: Swift 5
fuente