2011-07-19 25 views
7

Al igual que en serio después de pasar por esto ...Descartando la primera respuesta/Teclado con múltiples Campos de texto

Easy way to dismiss keyboard?

... tengo varias TextFields y algunos TextViews. ¿No hay una forma de tener un lote o grupo? ¿Desea dar el primer servicio de respuesta para todos los campos de texto? ¿Tendré que hacer un método para cada campo? Tal vez pasé por alto algo en ese enlace?

Tal vez pueda seguir algo como esto:

https://stackoverflow.com/questions/3282837/problem-with-multiple-textfields-to-make-the-keyboard-dissapear

Ojalá este último sentido? Gracias por adelantado.

= - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = -

lo he descubierto ....

Controller.h 

@interface Controller : UIViewController <UITextFieldDelegate> { 
    IBOutlet UITextField *clickedDone; 
} 
@property (nonatomic, retain) IBOutlet UITextField *clickedDone; 

Controller.m 

#import "Controller.h" 
@implementation Controller 
@synthesize clickedDone; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [clickedDone setDelegate:self]; 
} 

- (BOOL)textFieldShouldReturn:(UITextField *)textField { 
    [textField resignFirstResponder]; 
    return YES;  
} 
+1

Solo un campo es el primero en responder, solo tiene que renunciar a ese. – progrmr

+0

El enlace a la otra pregunta SO está muerto. – fatuhoku

Respuesta

4
clickedDone.returnKeyType = UIReturnKeyDone; // in viewDidLoad 

- (BOOL)textFieldShouldReturn:(UITextField *)textField 
{ 
    [textField resignFirstResponder]; 
    return YES;  
} 
30

La vista tiene un método endEditing: que puede utilizar. Los documentos dicen

Hace que la vista (o uno de sus campos de texto incrustados) resigne el estado de la primera respuesta.

En el controlador de vista sólo puede llamar a:

[[self view] endEditing:YES]; 
+1

Gracias! Tu solución es la mejor, especialmente cuando hay muchos campos con los que lidiar. – TCB13

+0

Esta es la mejor solución. ¡Gracias! – Macondo2Seattle

+0

Esta debería ser la respuesta aceptada. – mnl

1

mejor respuesta es:

    protocolo
  1. Agregado UITextFieldDelegate a su @interface viewcontroller ViewController: UIViewController
  2. En su xib, seleccione el campo de texto, en su secti Ulitlites en el panel lateral de la derecha de XCode en la subsección de "Connections Inspector", , enlace el delegado de textField con el "Propietario del archivo .xib".
  3. En su aplicación ViewController, incluyen los siguientes aparatos

- (BOOL)textFieldShouldReturn:(UITextField *)textField 
{ 
    [textField resignFirstResponder]; 
    return YES;  
} 
2

Es muy fácil ahora. Puede seguir un enfoque diferente según sus casos de uso. En mi caso, tuve varios campos de texto en UITableViewController. Lo que hice fue esto:

- (void)viewWillDisappear:(BOOL)animated { 
    [super viewWillDisappear:animated]; 

    [self.view endEditing:YES]; 
} 
Cuestiones relacionadas