iphone - responde - ¿Cómo puedo descartar el teclado al presionar Enter?
no me funcionan letras del teclado iphone (4)
Quiero descartar mi teclado mientras presiono la tecla RETORNO.
Lo he intentado poniendo el botón en la parte posterior de la vista.
¿Pero cómo puedo hacer esto presionando la tecla RETORNO?
Espero que haya hecho UIViewController <UITextFieldDelegate>
y yourTextField.delegate=self
;
y luego en el método delegado
- (BOOL)textFieldShouldReturn:(UITextField *)textField;
{
[textField resignFirstResponder];
return YES;
}
Supongo que estás hablando de un UITextField
lugar de una UITextView
ya que tu pregunta no es tan clara. Si es así, asegúrese de que su clase esté marcada como UITextFieldDelegate
en el archivo de interfaz,
@interface MyController: UIViewController <UITextFieldDelegate> {
UITextField *activeTextField;
// ...remainder of code not show ...
}
y luego deberías implementar los dos métodos de delegado como a continuación,
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
activeTextField = textField;!
return YES;
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
activeTextField = nil;
[textField resignFirstResponder];
return YES;
}
Sin embargo, si está utilizando una UITextView
, las cosas son un poco más complicadas. El protocolo UITextViewDelegate
carece del equivalente del método textFieldShouldReturn:
presumiblemente porque no deberíamos esperar que la tecla Return sea una señal de que el usuario desea dejar de editar el texto en un cuadro de diálogo de entrada de texto multilínea (después de todo, el usuario puede desea insertar saltos de línea presionando Return).
Sin embargo, hay varias formas de evitar la posibilidad de que el UITextView
renuncie como primer respondedor usando el teclado. El método habitual es colocar un botón Hecho en la barra de navegación cuando el UITextView
presenta el teclado emergente. Cuando se toca, este botón le pide a la vista de texto que se resigne como primera respuesta, que luego cerrará el teclado.
Sin embargo, dependiendo de cómo haya planificado su interfaz, es posible que desee que el UITextView
lo UITextView
cuando el usuario UITextView
fuera de UITextView
. Para hacerlo, debe subclasificar a UIView
para que acepte toques, y luego indicarle a la vista de texto que debe renunciar cuando el usuario toque fuera de la vista.
Crea una nueva clase,
#import <UIKit/UIKit.h>
@interface CustomView : UIView {
IBOutlet UITextView *textView;
}
@end
Luego, en la implementación, implemente el touchesEnded:withEvent:
y solicite a UITextView
que renuncie como primera respuesta.
#import "CustomView.h"
@implementation CustomView
- (id)initWithFrame:(CGRect)frame {
if (self = [super initWithFrame:frame]) {
// Initialization code
}
return self;
}
- (void) awakeFromNib {
self.multipleTouchEnabled = YES;
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"touches began count %d, %@", [touches count], touches);
[textView resignFirstResponder];
[self.nextResponder touchesEnded:touches withEvent:event];
}
@end
Una vez que hayas agregado la clase, debes guardar todos tus cambios, luego ingresar a Interface Builder y hacer clic en tu vista. Abra el inspector de identidad en el pabel de la Utilidad y cambie el tipo de la vista en su archivo de punta para ser su CustomView
lugar de la clase UIView
predeterminada. Luego, en el Inspector de conexiones, arrastre la salida textView
a UITextView
. Después de hacerlo, y una vez que reconstruya su aplicación, los toques fuera de los elementos de la interfaz de usuario activa ahora desactivarán el teclado. Sin embargo, UIView
cuenta que si la UIView
que está subclasificando está "detrás" de otros elementos de la IU, estos elementos interceptarán los toques antes de que lleguen a la capa UIView. Entonces, si bien esta solución es elegante, puede usarse solo en algunas situaciones. En muchos casos, tendrá que recurrir al método de fuerza bruta de agregar un botón Hecho a la barra de navegación para cerrar el teclado.
-(BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
No olvides agregar el delegado UITextFieldDelegate
Asegúrese de que su clase de controlador de vista sea un delegado para su UITextField
y luego use el método de delegado en esa clase:
#pragma mark - Delegate Methods
- (BOOL)textFieldShouldReturn:(UITextField *)textField{
// Dismiss the keyboard when the Return key is pressed.
[textField resignFirstResponder];
return YES;
}