¿Por qué los campos de texto no responden al ocultar el teclado?

Este es mi codigo:

- (BOOL) textFieldShouldReturn:(UITextField *)textField  {
    [txtSiteDesc resignFirstResponder];
    [txtDesc resignFirstResponder];
    [ssFS resignFirstResponder];

    return YES;

}

Este es el archivo .h:

#import <UIKit/UIKit.h>

@interface slEnterDataViewController : UITableViewController <UITextFieldDelegate>  {

    UITextField *txtSiteDesc;
    UITextField *txtDesc;
    UITextField *ssFS;
}

@property (nonatomic, retain) IBOutlet UITextField *txtSiteDesc;
@property (nonatomic, retain) IBOutlet UITextField *txtDesc;
@property (nonatomic, retain) IBOutlet UITextField *ssFS;

@end

Funciona para txtSiteDesc, pero no para ninguno de los otros. Supongo que el problema está en el método textFieldShouldReturn; Pensé que podría verificar el valor de "textField" para ver qué campo es y luego ejecutar el "resignFirstResponder" apropiado y regresar. Estoy cerca (creo) pero no lo suficientemente cerca.

La ayuda sería muy apreciada. :D

preguntado el 09 de marzo de 12 a las 23:03

2 Respuestas

¿Es posible que haya configurado el delegado para txtSiteDesc pero no para sus otros dos campos de texto? Esto explicaría por qué textFieldShouldReturn: se llama para su primer campo de texto, no para los demás. Asegúrese de que está configurando el delegate propiedad de los tres campos de texto para self (donde self = su controlador de vista).

respondido 09 mar '12, 23:03

Muchas gracias... funciona como un campeón ahora! Agradezco su ayuda... :D - SpokaneDude

Incluso yo enfrenté este problema. Esto es lo que estás buscando:

- (BOOL)textField:(UITextField *)theTextField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    if([string hasSuffix:@"\n"])
    {
        [theTextField resignFirstResponder];
        return NO;
    }
    return YES;
}

Esto ocultará el teclado cuando presione regresar/hecho, etc. en el teclado.

contestado el 30 de mayo de 13 a las 21:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.