2012-04-30 25 views
39

Tengo algunas entradas de texto y puedo ocultar el teclado cada vez que toco el fondo, pero solo cuando he estado ingresando en el primer nombre del cuadro de texto textField1. ahora este código debería ser simple pero no puedo entenderlo, ¿qué estoy haciendo mal?ocultando el teclado ios

-(IBAction)backgroundTouched:(id)sender { 
[textField1 resignFirstResponder]; 
[buildLength resignFirstResponder]; 
[buildWidth resignFirstResponder]; 
[ridgeWidth resignFirstResponder]; 
[rafterWidth resignFirstResponder]; 
[hipWidth resignFirstResponder]; 
[eaveOverhang resignFirstResponder]; 
[spacing resignFirstResponder]; 

}

+0

qué objeto está recibiendo el 'backgroundTouched:' acción? ¿Es la vista? ¿Algún objeto que pones detrás de todo? La forma en que obtuve un teclado para ocultar en iOS es anular el 'ViewSet: withEvent:' de ViewController. Se llama cuando ningún otro objeto puede manejar un evento táctil. Aquí es donde renuncio al primer respondedor, aunque debes verificar 'isFirstResponder' porque si no consumes el toque se supone que debes llamar a super. – Russ

+0

De acuerdo con @Russ ... tocar eventos en el controlador de vista es la manera más fácil de hacerlo. Pero sigue siendo misterioso si funciona para textField1. ¿Por qué no los otros? Supongo que los otros identificadores no son buenos (por ejemplo, que 'buildLength' no se haya inicializado correctamente). – danh

Respuesta

2

Usted puede intentar UITouch método, y en este conjunto el texto objeto de campo y llamar a resignFirstResponder cuando cada vez que toque en la pantalla del teclado renunciará, espero que esto va a funcionar para usted.

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    [currentSelectedTextField resignFirstResponder]; 
} 
186

Si desea ocultar el teclado cuando se toca un botón y usted tiene más de un UITextFields en su view, entonces debería usar:

[self.view endEditing:YES]; 

Toque en cualquier lugar de la vista, y el el teclado desaparecerá

+0

Me di cuenta de que, en algunos casos, este método funciona después de un retraso de aproximadamente 0.3 segundos. Quiero decir, resignFirstResponder elimina el teclado de inmediato. Pero este método no y usted debe usar performSelector después de la demora a veces después de usar esto. – wzbozon

6

También puede recorrer una serie de vistas (como las subvistas de UIView) y renunciar manualmente al teclado, esto es bueno si no desea renunciar a TODAS las subvistas de su UIView padre.

- (void)viewDidLoad 
{ 
    self.view.userInteractionEnabled = TRUE; 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
} 

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ 
    //Iterate through your subviews, or some other custom array of views 
    for (UIView *view in self.view.subviews) 
     [view resignFirstResponder]; 
} 
27

Prueba esto:

- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    [[self view] endEditing:YES]; 
} 
Cuestiones relacionadas