He estado buscando todo esto, pero parece que no puedo encontrarlo. Sé cómo descartar el teclado usando Objective-C
pero no tengo idea de cómo hacerlo usando Swift
. ¿Alguien sabe?
ios
swift
uikeyboard
laguna
fuente
fuente
Respuestas:
Aquí hay otra forma de hacer esta tarea si va a utilizar esta funcionalidad en múltiples
UIViewControllers
:Ahora en cada
UIViewController
, todo lo que tienes que hacer es llamar a esta función:Esta función se incluye como una función estándar en mi repositorio que contiene muchas Extensiones Swift útiles como esta, échale un vistazo: https://github.com/goktugyil/EZSwiftExtensions
fuente
didSelectRowAtIndexPath
.tap.cancelsTouchesInView = false
. Eso me resolvió al menos. Esperamos que esto ayude a alguienUna respuesta a su pregunta sobre cómo descartar el teclado en Xcode 6.1 usando Swift a continuación:
( Fuente de esta información ).
fuente
Swift 4 trabajando
Cree una extensión como la siguiente y llame
hideKeyboardWhenTappedAround()
a su controlador de vista Base.Lo más importante para llamar en su controlador de vista base para que no tenga que llamar todo el tiempo en todos los controladores de vista.
fuente
Puedes llamar
en cualquier instancia de un UIResponder, como un UITextField. Si lo llama en la vista que está causando que se muestre el teclado, el teclado se cerrará.
fuente
fuente
para Swift 3 es muy simple
si quieres ocultar el teclado al presionar la tecla RETURN
pero en el segundo caso, también deberá pasar delegado de todos los campos de texto al ViewController en el Tablero principal.
fuente
unrecognized selector sent to instance
con este código.Swift 3: la forma más fácil de descartar el teclado:
fuente
La respuesta de Dash es correcta y preferida. Un enfoque más "tierra quemada" es llamar
view.endEditing(true)
. Esto provocaview
y todas sus subvistas aresignFirstResponder
. Si no tiene una referencia a la vista que le gustaría descartar, esta es una solución hacky pero efectiva.fuente
Swift 5 solo dos líneas es suficiente. Añadir a su
viewDidLoad
debería funcionar.Si su gesto de toque bloqueó otros toques, agregue esta línea:
fuente
En storyboard:
fuente
Swift 3:
Extensión con
Selector
como parámetro para poder hacer cosas adicionales en la función de descarte ycancelsTouchesInView
evitar distorsiones con toques en otros elementos de la vista.Uso:
fuente
Utilice IQKeyboardmanager que lo ayudará a resolver fácilmente .....
/////////////////////////////////////////.
! [cómo deshabilitar el teclado ..] [1]
fuente
Encontré que la mejor solución incluía la respuesta aceptada de @Esqarrouth, con algunos ajustes:
La línea
tap.cancelsTouchesInView = false
fue crítica: asegura queUITapGestureRecognizer
no evita que otros elementos en la vista reciban interacción del usuario.El método
dismissKeyboard()
fue cambiado a un poco menos elegantedismissKeyboardView()
. Esto se debe a que en la base de código bastante antigua de mi proyecto, hubo numerosas ocasiones en quedismissKeyboard()
ya se usaba (imagino que esto no es infrecuente), causando problemas de compilación.Luego, como se indicó anteriormente, este comportamiento se puede habilitar en controladores de vista individuales:
fuente
Si usa una vista de desplazamiento, podría ser mucho más simple.
Simplemente seleccione
Dismiss interactively
en el guión gráfico.fuente
En Swift 4, agregue @objc:
En la viewDidLoad:
Función:
fuente
Agregue esta extensión a su ViewController:
fuente
Para ampliar la respuesta de Esqarrouth , siempre uso lo siguiente para descartar el teclado, especialmente si la clase de la que descarto el teclado no tiene una
view
propiedad y / o no es una subclase deUIView
.Y, por conveniencia, la siguiente extensión de la
UIApplcation
clase:fuente
fuente
Como programador novato, puede ser confuso cuando las personas producen respuestas más hábiles e innecesarias ... ¡No tiene que hacer nada de lo complicado que se muestra arriba! ...
Aquí está la opción más simple ... En el caso de que su teclado aparezca en respuesta al campo de texto - Dentro de la función de su pantalla táctil simplemente agregue la función resignFirstResponder . Como se muestra a continuación, el teclado se cerrará porque se libera el primer respondedor (saliendo de la cadena de respuesta) ...
fuente
He usado IQKeyBoardManagerSwift para teclado. Es fácil de usar. simplemente agregue el pod 'IQKeyboardManagerSwift'
Importe IQKeyboardManagerSwift y escriba el código
didFinishLaunchingWithOptions
enAppDelegate
.fuente
Este revestimiento renuncia al teclado de todos (cualquiera) el UITextField en una UIView
fuente
Solo una línea de código en el
viewDidLoad()
método:fuente
En Swift puedes usar
fuente
Para Swift3
Registre un reconocedor de eventos en viewDidLoad
entonces necesitamos agregar el gesto a la vista en la misma vistaDidLoad.
Entonces necesitamos inicializar el método registrado
fuente
Publicando como una nueva respuesta ya que mi edición de la respuesta de @ King-Wizard fue rechazada.
Convierta a su clase en un delegado del UITextField y anule los toques de inicio.
Swift 4
fuente
También puede agregar un reconocedor de gestos de toque para renunciar al teclado. :RE
fuente
Otra posibilidad es simplemente agregar un botón grande sin contenido que se encuentre debajo de todas las vistas que deba tocar. Dale una acción llamada:
El problema con un reconocedor de gestos fue para mí, que también captó todos los toques que quería recibir por parte de tableViewCells.
fuente
Si tiene otras vistas que también deberían recibir el toque, debe configurar
cancelsTouchesInView = false
Me gusta esto:
fuente
Intenta esto, está funcionando
fuente
Cuando hay más de un campo de texto en la vista
Para seguir @ recomendación de modocache a llamar No
view.endEditing()
, puede realizar un seguimiento del campo de texto que se convirtió en el primer respondedor, pero eso es desordenado y propenso a errores.Una alternativa es llamar
resignFirstResponder()
a todos los campos de texto en el controlador de vista . Aquí hay un ejemplo de cómo crear una colección de todos los campos de texto (que en mi caso era necesario para el código de validación de todos modos):Con la colección disponible, es muy sencillo iterar a través de todos ellos:
Así que ahora puede llamar
dismissKeyboard()
a su gestor de reconocimiento (o donde sea apropiado para usted). El inconveniente es que debe mantener la lista deUITextField
s cuando agrega o elimina campos.Comentarios bienvenidos Si hay un problema con la invocación
resignFirstResponder()
de controles que no responden primero, o si hay una manera fácil y garantizada sin errores de rastrear al primer respondedor actual, ¡me encantaría saberlo!fuente