Respostas:
Primeiro você precisa estar em conformidade com o UITextFieldDelegate
protocolo no arquivo de cabeçalho do seu View / ViewController como este:
@interface YourViewController : UIViewController <UITextFieldDelegate>
Então, em seu arquivo .m, você precisa implementar o seguinte UITextFieldDelegate
método de protocolo:
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
[textField resignFirstResponder];
certifica-se de que o teclado seja descartado.
Certifique-se de configurar seu view / viewcontroller para ser o delegado do UITextField depois de inicializar o campo de texto no .m:
yourTextField = [[UITextField alloc] initWithFrame:yourFrame];
//....
//....
//Setting the textField's properties
//....
//The next line is important!!
yourTextField.delegate = self; //self references the viewcontroller or view your textField is on
Implemente o método UITextFieldDelegate assim:
- (BOOL)textFieldShouldReturn:(UITextField *)aTextField
{
[aTextField resignFirstResponder];
return YES;
}
Consulte Gerenciando o teclado para uma discussão completa sobre este tópico.
Seus UITextFields devem ter um objeto delegado (UITextFieldDelegate). Use o seguinte código em seu delegado para fazer o teclado desaparecer:
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
}
Deve funcionar até agora ...
Quando a tecla de retorno for pressionada, chame:
[uitextfield resignFirstResponder];
Depois de um bom tempo procurando algo que fizesse sentido, foi isso que eu montei e funcionou como um encanto.
.h
//
// ViewController.h
// demoKeyboardScrolling
//
// Created by Chris Cantley on 11/14/13.
// Copyright (c) 2013 Chris Cantley. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController <UITextFieldDelegate>
// Connect your text field to this the below property.
@property (weak, nonatomic) IBOutlet UITextField *theTextField;
@end
.m
//
// ViewController.m
// demoKeyboardScrolling
//
// Created by Chris Cantley on 11/14/13.
// Copyright (c) 2013 Chris Cantley. All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// _theTextField is the name of the parameter designated in the .h file.
_theTextField.returnKeyType = UIReturnKeyDone;
[_theTextField setDelegate:self];
}
// This part is more dynamic as it closes the keyboard regardless of what text field
// is being used when pressing return.
// You might want to control every single text field separately but that isn't
// what this code do.
-(void)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
}
@end
Espero que isto ajude!
Defina o Delegado do UITextField como seu ViewController, adicione uma saída de referência entre o Proprietário do arquivo e o UITextField e implemente este método:
-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
if (textField == yourTextField)
{
[textField resignFirstResponder];
}
return NO;
}
Adicione isso em vez da classe predefinida
class ViewController: UIViewController, UITextFieldDelegate {
Para remover o teclado quando clicado fora do teclado
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
self.view.endEditing(true)
}
e para remover o teclado quando pressionado enter
adicione esta linha em viewDidLoad ()
inputField é o nome do textField usado.
self.inputField.delegate = self
e adicionar esta função
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
Swift 2:
isso é o que é feito para fazer tudo!
feche o teclado com o Done
botão ou Touch outSide
, Next
para ir para a próxima entrada.
Primeiro altere TextFiled Return Key
para Next
no StoryBoard.
override func viewDidLoad() {
txtBillIdentifier.delegate = self
txtBillIdentifier.tag = 1
txtPayIdentifier.delegate = self
txtPayIdentifier.tag = 2
let tap = UITapGestureRecognizer(target: self, action: "onTouchGesture")
self.view.addGestureRecognizer(tap)
}
func textFieldShouldReturn(textField: UITextField) -> Bool {
if(textField.returnKeyType == UIReturnKeyType.Default) {
if let next = textField.superview?.viewWithTag(textField.tag+1) as? UITextField {
next.becomeFirstResponder()
return false
}
}
textField.resignFirstResponder()
return false
}
func onTouchGesture(){
self.view.endEditing(true)
}
em breve você deve delegar UITextfieldDelegate , é importante não se esquecer disso, no viewController, como:
class MyViewController: UITextfieldDelegate{
mytextfield.delegate = self
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
}
}
Você pode adicionar uma IBAction ao uiTextField (o evento de lançamento é "Did End On Exit"), e a IBAction pode se chamar hideKeyboard,
-(IBAction)hideKeyboard:(id)sender
{
[uitextfield resignFirstResponder];
}
também, você pode aplicá-lo a outros textFields ou botões, por exemplo, você pode adicionar um botão oculto à visualização, ao clicar nele para ocultar o teclado.
Você pode tentar esta subclasse UITextfield, que pode definir uma condição para o texto para alterar dinamicamente a UIReturnKey:
https://github.com/codeinteractiveapps/OBReturnKeyTextField