tamaño - cómo ocultar el teclado cuando se toca el área vacía en el iphone
teclado iphone descargar (11)
Normalmente, cuando toca el área de entrada de texto, el teclado emerge y cuando toca el área vacía de la pantalla, el teclado desaparece. ¿Cómo hacer que eso suceda?
como lo que experimentamos en el safari de iphone ...
Gracias
El siguiente código funciona bien con el proyecto xamarin iOS:
public override void TouchesBegan (NSSet touches, UIEvent evt){
View.EndEditing (true);
}
Enviar resignFirstResponder
al control.
Esta solución debería funcionar bien si está trabajando con swift y iOS 8/9:
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
self.view.endEditing(true)
}
Estaba teniendo este problema también, fue muy molesto. Pero descubrí cómo deshacerme del teclado por accidente. Digamos que estás enviando mensajes de texto a John, y hay un teclado en el camino desde donde ves tus conversaciones y, por lo tanto, reduces la pantalla que puedes ver. Bien, entonces haga clic en los mensajes en la barra de herramientas de la izquierda, luego seleccione una persona diferente con la que tenga un registro de mensajes de texto, luego vuelva a presionar los mensajes en la esquina superior izquierda. Luego regresa y selecciona John. No, estás de vuelta en la conversación con John, el teclado ya no está. Las costuras son muchas pero es bastante rápido. Uno pensaría que simplemente pondrían un botón de ocultar en el teclado jajaja. Espero que ayude, o que sea lo suficientemente claro.
Forma actualizada (recomendada):
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[self.view endEditing:YES];
}
Esto finalizará la edición en todas las subvistas y renunciará al primer respondedor.
Otra forma (enumerando todas las vistas de texto):
Aquí hay un paso por paso para ello:
Agregue un IBAction a su controlador de vista, como - (IBAction) backgroundTouch: (id) remitente
En la acción backgroundTouch, debe enviar el mensaje resignFirstResponder a todos los cuadros de texto en su vista. Esto es desafortunado pero necesario ya que actualmente no hay forma de recuperar el objeto que actualmente tiene el estado de FirstResponder. Debería verse algo como esto:
- (IBAction)backgroundTouch:(id)sender {
[someTextBox resignFirstResponder];
[anotherTextBox resignFirstResponder];
}
Agregue un control de botón a la vista, mida el tamaño para cubrir toda el área visible (excepto la barra de estado o cualquier pestaña o controladores de navegación). Seleccione el botón y luego vaya al menú Diseño y seleccione Enviar a Atrás. También configure el Tipo de botón como personalizado, que es invisible si no proporciona específicamente ningún código de dibujo para él.
Conecte el evento Touch Up Inside del botón al backgroundTouch: action y pruébelo.
No pude compilar la respuesta de Val con el selector ''initWithBlock:''.
Este código funciona para mí. Agregue esto al método que define la vista: tenga en cuenta que mi vista está compuesta y la subvista que quiero responder al único toque es ''chatView''. La vista del campo de entrada que utiliza el teclado se denomina ''chatInput''.
// single tap to resign (hide) the keyboard
UITapGestureRecognizer *singleTapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapFrom:)];
singleTapRecognizer.numberOfTouchesRequired = 1;
singleTapRecognizer.cancelsTouchesInView = NO;
[chatContent addGestureRecognizer:singleTapRecognizer];
A continuación, agregue el método de manejo del grifo.
/**
* Handles a recognized single tap gesture.
*/
- (void) handleTapFrom: (UITapGestureRecognizer *) recognizer {
// hide the keyboard
NSLog(@"hiding the keyboard");
[chatInput resignFirstResponder];
}
Olvídate de poner un botón en el fondo allí solución simple
(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[self.textfieldName resignFirstResponder];
}
Para> iOS 4.0 hay otra solución (y tal vez mejor) Con este código, toque solo en cualquier lugar a la vista para ocultar el teclado.
// single tap to resign keyboard
UITapGestureRecognizer *singleTapRecognizer = [[UITapGestureRecognizer alloc] initWithBlock:^(UIGestureRecognizer *rec){
[input_text resignFirstResponder];
}];
self.singleTapRecognizer.numberOfTapsRequired = 1;
self.singleTapRecognizer.cancelsTouchesInView = NO;
[self.view addGestureRecognizer:singleTapRecognizer];
Puedes hacerlo de esta manera también
Ocultar teclado atacando el fondo a la vista
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[[self view] endEditing:YES];
}
Usa esta solución simple
Para Swift 4:
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
self.view.endEditing(true)
}
Para Swift 2:
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
self.view.endEditing(true)
}
Para Objective C:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[self.view endEditing:YES];
}
Funciona con UITextField, UITextView y todas las subvistas.
hay un tutorial sobre ese problema (también sobre el teclado numérico sin llave HECHO) here