No hay un botón "Listo" en el teclado numérico. Cuando un usuario termina de ingresar información numérica en un campo de texto, ¿cómo puedo hacer que desaparezca el teclado numérico?
Podría obtener un botón "Listo" utilizando el teclado predeterminado, pero luego los usuarios tendrían que cambiar a las teclas numéricas para ingresar números. ¿Hay alguna manera de mostrar un botón "Listo" en el teclado numérico?
ios
iphone
user-input
Zhong frío
fuente
fuente
Aquí hay una adaptación para la respuesta de Luda para Swift:
En la declaración de su subclase UIViewController ponga
en ViewDidLoad poner:
y agregue las funciones hoopla y hoopla (siéntase libre de elegir otros nombres, simplemente cambie los nombres del selector en ViewDidLoad en consecuencia
fuente
UIBarButtonItemStyle.Bordered
está en desuso desde iOS 8.0.UIBarButtonItemStyle.Plain
se sugiere en su lugar.El truco que he visto es crear un botón transparente personalizado del tamaño de la vista completa y luego, en su método de clic, hacer que el campo de texto renuncie al primer respondedor. Por lo tanto, el usuario puede hacer clic en cualquier lugar fuera del campo para descartar el teclado.
fuente
Una solución Swift 3 usando una extensión. Ideal si tiene varios
UITextField
objetos numéricos en su aplicación, ya que le da la flexibilidad para decidir, para cada unoUITextField
, si desea realizar una acción personalizada cuando se toca Listo o Cancelar .Ejemplo de uso con las acciones predeterminadas:
Ejemplo de uso con una acción Listo personalizada :
fuente
A continuación se muestra una revisión de la respuesta de Luda con los siguientes cambios:
la vista de accesorios se ajusta automáticamente al ancho del marco de la aplicación
UIBarButtonItemStyleBordered
se evita la constante obsoletael botón "Listo" se instancia como
UIBarButtonSystemItemDone
Actualmente, el botón "Listo" está centrado en la vista de accesorios. Puede colocarlo a la izquierda o derecha eliminando el espacio en el lado pertinente.
He omitido un botón "Cancelar" porque el teclado predeterminado tampoco tiene uno. Si desea un botón "Cancelar", le sugiero que lo cree una instancia
UIBarButtonSystemItemCancel
y que se asegure de no descartar el valor original en su campo de texto. El comportamiento "Cancelar" implementado en la respuesta de Luda, que sobrescribe el valor con una cadena en blanco, puede no ser lo que desea.Para obtener más información sobre cómo crear vistas de accesorios, consulte la documentación de Apple sobre vistas personalizadas para la entrada de datos . Probablemente también desee consultar las páginas de referencia en UIToolbar y UIBarButtonItem .
fuente
[UIScreen mainScreen].applicationFrame
está en desuso en iOS 9. Uso[UIScreen mainScreen].bounds
La solución en UIKeyboardTypeNumberPad y la tecla de retorno faltante funciona muy bien, pero solo si no hay otros campos de texto que no sean números en la pantalla.
Tomé ese código y lo convertí en un UIViewController que simplemente puede subclasificar para que funcionen los botones numéricos. Deberá obtener los iconos del enlace anterior.
NumberPadViewController.h:
y NumberPadViewController.m:
Disfrutar.
fuente
Aquí está el código más reciente. Simplemente incluya #import "UIViewController + NumPadReturn.h" en su viewController.
Aquí está el .h
Y ellos
fuente
Una solución mucho más fácil
fuente
Si tiene varios campos numéricos, sugiero subclasificar UITextField para crear un NumericTextField que siempre muestre un teclado numérico con un botón listo. Luego, simplemente asocie sus campos numéricos con esta clase en el Creador de interfaces y no necesitará ningún código adicional en ninguno de sus Controladores de vista. La siguiente es la clase Swift 3.0 que estoy usando en Xcode 8.0.
Swift 4.2
fuente
He encontrado @ respuesta de user1258240 que debe darse bastante concisa esto no es tan simple como el establecimiento de una
returnKeyType
propiedad.Solo quería contribuir con mi propio enfoque "reutilizable" para esto:
fuente
SWIFT 3.0 Un sabor diferente, utilizando partes de algunas respuestas anteriores.
fuente
Describo una solución para iOS 4.2+ aquí, pero el botón de descarte desaparece después de que aparece el teclado. No es terrible, pero tampoco es ideal.
La solución descrita en la pregunta vinculada anteriormente incluye una ilusión más elegante para descartar el botón, donde me desvanezco y desplazo verticalmente el botón para proporcionar la apariencia de que el teclado y el botón se descartan juntos.
fuente
La forma más sencilla es:
crear un botón transparente personalizado y colocarlo en la esquina inferior izquierda, que tendrá el mismo
CGSize
espacio vacíoUIKeyboardTypeNumberPad
. Alternar (mostrar / ocultar) este botón en textFieldbecomeFirstResponder
, al hacer clic en el botón respectivamente.fuente
Aquí está la solución más simple que he encontrado. He aprendido esto del libro Principio de desarrollo de iOS 5.
Suponiendo que se llame al campo de número
numberField
.En
ViewController
, agregue el siguiente método:En
ViewController.m
, agregue el siguiente código:Regrese al
nib
archivo.Utilities
Pan abiertoIdentity inspector
debajoUtilities
.View
(en el archivo plumín) una vez. Asegúrese de no haber hecho clic en ninguno de los elementos de la vista. En aras de la aclaración, debería ver UIView debajoClass
enIdentity inspector
.Connection Inspector
.Touch Down
y suelte la flecha en elFile Owner
icono. (FYI ... El icono del propietario del archivo se muestra a la izquierda deView
y aparece como un cubo hueco con marco amarillo).closeKeyboard
.Ahora, cuando hace clic en cualquier parte del fondo
View
, debería poder cerrar el teclado.Espero que esto te ayude a resolver tu problema. :-)
fuente
Modifiqué la solución de Bryan para que fuera un poco más robusta, de modo que funcionara bien con otros tipos de teclados que podrían aparecer en la misma vista. Se describe aquí:
Cree un botón HECHO en el teclado numérico UIKeyboard de iOS
Trataría de explicarlo aquí, pero la mayor parte es un código para mirar que no encajaría fácilmente aquí
fuente
Si sabe de antemano la cantidad de números que se ingresarán (por ejemplo, un PIN de 4 dígitos), puede descartar automáticamente después de presionar 4 teclas, según mi respuesta a esta pregunta similar:
descartar el teclado numérico
No es necesario un botón de finalización adicional en este caso.
fuente
También podemos simplificar aún más la solución de "usuario tocado en otro lugar" si solo le decimos a nuestro controlador de vista que finalice la edición:
... suponiendo que "tocar otro lugar descarta el teclado" es el comportamiento deseado para cualquier otro campo editable en la vista también.
fuente
Para Swift 2.2 yo uso esto
fuente
Todas esas implementaciones sobre cómo encontrar la vista del teclado y agregar el botón listo en la tercera fila (es por eso que button.y = 163 b / c la altura del teclado es 216) son frágiles porque iOS cambia la jerarquía de la vista. Por ejemplo, ninguno de los códigos anteriores funciona para iOS9.
Creo que es más seguro encontrar la vista superior, por [[[UIApplication sharedApplication] windows] lastObject], y simplemente agregar el botón en la esquina inferior izquierda, doneButton.frame = CGRectMake (0, SCREEN_HEIGHT-53, 106 , 53); // modo retrato
fuente
Swift 2.2 / Usé la respuesta de Dx_. Sin embargo, quería esta funcionalidad en todos los teclados. Entonces en mi clase base pongo el código:
Luego simplemente llame a addDoneButtonForTextFields en self.view.subviews en viewDidLoad (o willDisplayCell si usa una vista de tabla) para agregar el botón Listo a todos los teclados.
fuente