Una forma más elegante es descartar el teclado cuando el usuario toca en algún lugar fuera del marco del teclado.
Primero, configure la vista de su ViewController en la clase "UIControl" en el inspector de identidad en UIBuilder. Control-arrastre la vista al archivo de encabezado de ViewController y vincúlela como una acción con el evento como Retocar adentro, como:
ViewController.h
-(IBAction)dismissKeyboardOnTap:(id)sender;
En el archivo principal de ViewController, ViewController.m:
-(IBAction)dismissKeyboardOnTap:(id)sender
{
[[self view] endEditing:YES];
}
Puede requerir un doble toque o toque prolongado utilizando técnicas similares. Es posible que deba configurar su ViewController para que sea UITextViewDelegate y conectar TextView al ViewController. Este método funciona tanto para UITextView como para UITextField.
Fuente: Big Nerd Ranch
EDITAR: También me gustaría agregar que si está utilizando un UIScrollView, la técnica anterior puede no funcionar tan fácilmente a través del Creador de interfaces. En ese caso, puede usar un UIGestureRecognizer y llamar al método [[self view] endEditing: YES] dentro de él. Un ejemplo sería:
-(void)ViewDidLoad{
....
UITapGestureRecognizer *tapRec = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(tap:)];
[self.view addGestureRecognizer: tapRec];
....
}
-(void)tap:(UITapGestureRecognizer *)tapRec{
[[self view] endEditing: YES];
}
Cuando el usuario toca fuera del teclado y no toca un espacio de entrada, el teclado se cerrará.