2012-04-06 27 views
7

Simplemente no puedo hacer que el botón "Hecho" salga del teclado.iOS Xcode teclado hecho botón función

He utilizado este en mi archivo Controller.hy

- (IBAction)textFieldDoneEditing:(id)sender; 

y esto para mi archivo Controller.m

- (IBAction)textFieldDoneEditing:(id)sender { 
    [sender resignFirstResponer]; 
} 

y estoy metido en el cableado de la parte .xib.

+1

Creo que debe haberse olvidado de configurar 'delegate' para su campo de texto. – Kjuly

+0

publicación similar en Stackoverflow, síguelo. http://stackoverflow.com/questions/2828826/iphone-keyboard-done-button-and-resignfirstresponder – AsifHabib

Respuesta

23

Hacer que el controlador de un delegado de la UITextField/UITextView en IB o de código como textField.delegate = self;

Editted: Para ello, tiene que declarar el controlador de un delegado de UITextFieldDelegate/UITextViewDelegate como

@interface Controller : <UITextFieldDelegate> { ... 

, a continuación, reemplazar el método:

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

para UITextField y

-(BOOL)textViewShouldEndEditing:(UITextView *)textView{ 
    [textView resignFirstResponder]; 
    return YES; 
} 

para UITextView

+1

controller.h también necesita declarar que adopta el protocolo UITextFieldDelegate. – Marco

+0

@Marco Gracias. Editado la respuesta. – skonb

+1

Finalmente un ejemplo de trabajo. Gracias –

1

En su .xib, haga clic derecho en la vista de texto, arrastre para "Manual de Archivo" y haga clic en "delegado". Debería funcionar ahora?

Edit: Whoops, lo siento, soy un idiota, haz lo que dice ese otro tipo. Sin embargo, si no sabes cómo configurar el delegado en el código, puedes hacerlo a mi manera en IB.

+0

Configuré el delegado en el código, pero TAMBIÉN tuve que conectar los campos de texto en IB como sugiere, así que gracias por publicar esta respuesta. –

0

Déjame hacer mi primera contribución: Si tiene varios campos de texto, agruparlos en un @property (fuerte, no atómica)

* .h

@property (strong, nonatomic) IBOutletCollection(UITextField) NSArray *collectingData; 

* .m

-(BOOL)textFieldShouldReturn:(UITextField *)boxes 
    { 
     for (UITextField *boxes in collectingData) { 
     [boxes resignFirstResponder]; 
    } 
    return YES; 

} 
Cuestiones relacionadas