Clicar em um campo de texto faz o teclado aparecer. Como oculto quando o usuário pressiona a tecla Enter?
Clicar em um campo de texto faz o teclado aparecer. Como oculto quando o usuário pressiona a tecla Enter?
Respostas:
Primeiro, faça o seu arquivo delegar para UITextField
@interface MYLoginViewController () <UITextFieldDelegate>
@end
Em seguida, adicione esse método ao seu código.
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
Adicione também self.textField.delegate = self;
Em viewDidLoad
declarar:
[yourTextField setDelegate:self];
Em seguida, inclua a substituição do método delegado:
-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
setDelegate:
lembrete. Definitivamente tinha esquecido e o código não estava funcionando anteriormente.
Tente isso em Swift ,
Etapa 1: defina o delegado como seu própriotextField
textField.delegate = self
Etapa 2: adicione este UITextFieldDelegate abaixo da sua declaração de classe,
extension YourClassName: UITextFieldDelegate {
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
}
No Swift, faça o seguinte:
Primeiro no seu ViewController
implemento, UITextFieldDelegate
por exemplo.
class MyViewController: UIViewController, UITextFieldDelegate {
....
}
Agora adicione um delegado a um TextField
no qual você deseja descartar o teclado quando o retorno for tocado no viewDidLoad
método como abaixo ou onde você o está inicializando. Por exemplo.
override func viewDidLoad() {
super.viewDidLoad()
myTextField.delegate = self
}
Agora adicione este método.
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
Tente isso,
[textField setDelegate: self];
Em seguida, no método delegado textField
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
Para definir o método delegate UITextField
e over ride, textFieldShouldReturn
nesse método, basta escrever as seguintes duas linhas:
[textField resignFirstResponder];
return YES;
é isso aí. Antes de escrever um código, não se esqueça de definir o delegado de um UITextField
e definir o tipo de chave Return como "Concluído" na janela de propriedades (comando + shift + I).
Você pode conectar "Ação primária acionada" (clique com o botão direito do mouse em UITextField) com uma IBAction e pode renunciar ao primeiro atendimento (sem delegação). Exemplo (Swift 4):
@IBAction func textFieldPrimaryAction(_ sender: UITextField) {
sender.resignFirstResponder()
...
}
Defina delegar UITextField
no controlador de exibição field.delegate = self
e, em seguida:
extension ViewController: UITextFieldDelegate {
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
// don't force `endEditing` if you want to be asked for resigning
// also return real flow value, not strict, like: true / false
return textField.endEditing(false)
}
}
Se você deseja ocultar o teclado para um uso específico do teclado
[self.view resignFirstResponder];
Se você deseja ocultar qualquer teclado da vista, use[self.view endEditing:true];
Ok, acho que para um iniciante as coisas podem ser um pouco confusas. Eu acho que a resposta correta é uma mistura de todos os itens acima, pelo menos no Swift4.
Crie uma extensão ou use o ViewController no qual você deseja usar isso, mas certifique-se de implementar o UITextFieldDelegate. Por uma questão de reutilização, achei mais fácil usar uma extensão:
extension UIViewController : UITextFieldDelegate {
...
}
mas a alternativa funciona também:
class MyViewController: UIViewController {
...
}
Adicione o método textFieldShouldReturn (dependendo da opção anterior, na extensão ou no seu ViewController)
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
return textField.endEditing(false)
}
No seu método viewDidLoad, defina o delegado do campo de texto como auto
@IBOutlet weak var myTextField: UITextField!
...
override func viewDidLoad() {
..
myTextField.delegte = self;
..
}
Isso deve ser tudo. Agora, quando você pressiona return
o botão textFieldShouldReturn
deve ser chamado.
Defina esta classe e defina seu campo de texto para usá-la, e isso automatiza todo o teclado oculto quando o retorno é pressionado automaticamente.
class TextFieldWithReturn: UITextField, UITextFieldDelegate
{
required init?(coder aDecoder: NSCoder)
{
super.init(coder: aDecoder)
self.delegate = self
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool
{
textField.resignFirstResponder()
return true
}
}
Então, tudo o que você precisa fazer no storyboard é definir os campos para usar a classe: