iphone cocoa-touch uitextfield iphone-softkeyboard

iphone - Deshabilitar el teclado UITextField?



cocoa-touch iphone-softkeyboard (8)

Para deshabilitar el teclado UITextField:

  1. Ir a Main.Storyboard
  2. Haga clic en UITextField para seleccionarlo
  3. Mostrar el inspector de Atributos
  4. Desmarque la interacción del usuario habilitada

Para deshabilitar el teclado UITextView:

  1. Ir a Main.Storyboard
  2. Haga clic en UITextView para seleccionarlo
  3. Mostrar el inspector de Atributos
  4. Desmarque el comportamiento editable

Puse un teclado numérico en mi aplicación para ingresar números en una vista de texto, pero para ingresar números tengo que hacer clic en la vista de texto. Una vez que lo hago, aparece el teclado normal, que no quiero.

¿Cómo puedo desactivar el teclado por completo? Cualquier ayuda es muy apreciada.


Dependiendo de cómo tenga activados los botones existentes, esto podría romperlos, pero podría evitar que el teclado aparezca configurando la propiedad editable de textView en NO.

myTextView.editable = NO


En Swift 2.x, 3.x, 4.x

textField.inputView = UIView()

Hace el truco


En Xcode 8.2 puede hacerlo fácilmente desmarcando la opción de estado "habilitado".

  1. Haga clic en el campo de texto que desea que no sea editable
  2. Ir al inspector de attirube en el lado derecho
  3. Desmarque "habilitado" para estado

O si quieres hacerlo a través del código. Simplemente puede crear una @IBOutlet de este campo de texto, darle un nombre y luego usar este nombre de variable en el funcion viewDidLoad (o cualquier personalizado si lo desea) como este (en swift 3.0.1):

override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. myTextField.isEditable = false }


La propiedad inputView de UITextField es nula por defecto, lo que significa que se muestra el teclado estándar.

Si le asigna una vista de entrada personalizada, o simplemente una vista ficticia, entonces el teclado no aparecerá, pero el cursor parpadeará:

UIView* dummyView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 1, 1)]; myTextField.inputView = dummyView; // Hide keyboard, but show blinking cursor

Si desea ocultar el teclado y el cursor parpadeante, utilice este enfoque:

-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField { return NO; // Hide both keyboard and blinking cursor. }


Si se trata de un UITextField, puede establecer su propiedad enabled en NO.

Si se trata de una UITextView, puede implementar -textViewShouldBeginEditing: en su delegado para devolver NO, para que nunca comience a editarse. O puede subclasificarlo y anular -canBecomeFirstResponder para devolver NO. O puede aprovechar su comportamiento de edición y poner sus botones numéricos en una vista que utiliza como inputView la vista de inputView . Se supone que esto hace que los botones se muestren cuando se edita la vista de texto. Eso puede o no ser lo que quieres.


Tengo el mismo problema cuando tenía 2 campos de texto en la misma vista. Mi propósito era mostrar un teclado predeterminado para un campo de texto y ocultarlo por segundo y mostrar en su lugar una lista desplegable.

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField

método simplemente no funcionó como esperaba para 2 campos de texto, la única solución que encontré fue

UIView* dummyView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 1, 1)]; myTextField.inputView = dummyView; myTextField.inputAccessoryView = dummyView; myTextField.tintColor = myTextField.backgroundColor; //to hide a blinking cursor

Esto ocultará totalmente el teclado de un campo de texto de destino ( DropDownList en mi caso) y mostrará uno predeterminado cuando el usuario cambie al segundo campo de texto ( Número de cuenta en mi captura de pantalla)


private void TxtExpiry_EditingDidBegin(object sender, EventArgs e) { ((UITextField)sender).ResignFirstResponder(); }

En C # esto funcionó para mí, no uso el guión gráfico.