Desativar o teclado UITextField?

Eu coloquei um teclado numérico no meu aplicativo para inserir números em uma exibição de texto, mas para inserir números, eu tenho que clicar na exibição de texto. Uma vez que eu faço isso, o teclado normal aparece, o que eu não quero.

Como posso desativar o teclado completamente? Qualquer ajuda é muito apreciada.

A propriedade inputView do UITextField é nula por padrão, o que significa que o teclado padrão é exibido.

Se você atribuir a ela uma visualização de input personalizada ou apenas uma visão simulada, o teclado não aparecerá, mas o cursor intermitente ainda aparecerá:

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

Se você quiser esconder o teclado e o cursor piscando, use esta abordagem:

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

No Swift 2.x, 3.x, 4.x

 textField.inputView = UIView() 

faz o truque

Se for um UITextField, você pode definir sua propriedade enabled como NO.

Se for um UITextView, você pode implementar -textViewShouldBeginEditing: em seu delegado para retornar NO, para que ele nunca comece a editar. Ou você pode subclassificar e replace -canBecomeFirstResponder para retornar NO. Ou você pode aproveitar seu comportamento de edição e colocar seus botões numéricos em uma exibição que você usa como inputView da exibição de inputView . Isso supostamente faz com que os botões sejam exibidos quando a exibição de texto é editada. Isso pode ou não ser o que você quer.

Dependendo de como você tem seus botões existentes funcionando, isso pode quebrá-los, mas você pode impedir que o teclado seja exibido definindo a propriedade editável do textView como NO

 myTextView.editable = NO 

Para desativar o teclado UITextField:

  1. Ir para Main.Storyboard
  2. Clique no UITextField para selecioná-lo
  3. Mostrar o inspetor de atributos
  4. Desmarque a interação do usuário ativada

Para desativar o teclado UITextView:

  1. Ir para Main.Storyboard
  2. Clique no UITextView para selecioná-lo
  3. Mostrar o inspetor de atributos
  4. Desmarque o comportamento editável

Eu tenho o mesmo problema quando tinha 2 campos de texto na mesma vista. Meu objective era mostrar um teclado padrão para um campo de texto e ocultar por segundo e mostrar uma lista suspensa.

 - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField 

método simplesmente não funcionou como eu esperava para 2 campos de texto, a única solução que encontrei foi

  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 

Isso ocultará totalmente o teclado de um textField de destino ( DropDownList no meu caso) e mostrará um padrão quando o usuário alternar para o segundo campo de texto ( número da conta na minha captura de canvas)

insira a descrição da imagem aqui

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

Em c # isso funcionou para mim, eu não uso o storyboard.

No Xcode 8.2, você pode fazê-lo facilmente, desmarcando a opção “enabled” do estado.

  1. Clique no textField que você quer que não seja editável
  2. Vá para o inspetor de attirube no lado direito
  3. Desmarque “ativado” para estado

insira a descrição da imagem aqui

Ou se você quiser fazer isso via código. Você pode simplesmente criar um @IBOutlet deste campo de texto, dar-lhe um nome e, em seguida, usar este nome de variável na function viewDidLoad (ou qualquer personalizado se você quiser) assim (no swift 3.0.1):

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