Deshabilitar el teclado UITextField?

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.

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. } 

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

 textField.inputView = UIView() 

Hace el truco

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.

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 

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

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)

enter image description here

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

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

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

enter image description here

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 }