Pregunta

Estoy usando SWRevealViewController en mi app y estoy teniendo un problema.Tengo un campo de texto en una escena, si me deslice hacia la izquierda cuando el teclado está abierto, aparecerá el menú pero no descarta el teclado.¿Cómo puedo despedir de teclado en la parte izquierda del pase?

He intentado

UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(dismissKeyboard)];
swipe.direction = UISwipeGestureRecognizerDirectionLeft;
[self.view addGestureRecognizer:swipeRecognizer];

-(void)dismissKeyboard
{
    [self.textField resignFirstResponder];
}

pero no funciona, creo que es porque me estoy utilizando ya un panGestureRecognizer para revealViewcontroller es decir, [self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer];

También estoy usando UITapGestureRecognizer pero sólo funciona para los toque no para pasar el dedo.

¿Fue útil?

Solución

creo que la u necesita utilizar uno de los método de delegado en la aplicación delegado de hay puede delegar métodos están ahí, pero la necesidad de u hacer algo como la siguiente

no agregue ningún gestos

el uso de este delegado en el appDelegate eliminar todas las macros comienza con #if no es necesario que

poner un punto de ruptura en la aplicación delegado a este método a continuación delegado método de célula, cada vez SWRevealViewController movido o en rodajas ..

- (void)revealController:(SWRevealViewController *)revealController didMoveToPosition:(FrontViewPosition)position
{
   // NSLog( @"%@: %@", NSStringFromSelector(_cmd), [self stringFromFrontViewPosition:position]);
   if(position == FrontViewPositionRight) //check the where to move 
   {
      UINavigationController *viewController = revealController.frontViewController;

     if([viewController.visibleViewController isKindOfClass:[FrontViewController class]])
       {
         [(FrontViewController *)viewController.visibleViewController dismissKeyboard]; //where this is the method declared in the FrontViewController.h file
      }

   }
}

hay una advertencia todavía funciona poner un punto de ruptura y de verificación espero que esto ayude u ...

en FrontViewController.h

  -(void)dismissKeyboard; //add this 

en el FrontViewController.m

 -(void)dismissKeyboard
 {
      if([self.textField isFirstResponder]) //check
         [self.textField resignFirstResponder];
 }

Otros consejos

Yo tenía el mismo problema.

He añadido self.revealController.delegate = self; a mi punto de Vista Controlador que he usado como Vista de Frente.Y delegado método llamado.

He utilizado - (void)revealController:(SWRevealViewController *)revealController willMoveToPosition:(FrontViewPosition)position{} método de delegado y escribí [textField endEditing:YES]; en este método de delegado.

También añadió <SWRevealViewControllerDelegate> a mi ViewController.h que está Delante de mi Vista.

Intente esto:

Por favor, añada el siguiente código en SWRevealViewContoller.m en el método -(BOOL)_panGestureShouldBegin

[auto.ver endEditing:YES];

En primer lugar usted necesita para reemplazar el revealToggle:método por el método personalizado como este:

UIBarButtonItem *barBtn = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"reveal-icon.png"] style:UIBarButtonItemStyleBordered target:self action:@selector(myMethod)];

self.navigationItem.leftBarButtonItem = barBtn;

Y que en su método:

-(void)myMethod{
[self.view endEditing:YES];
SWRevealViewController *reveal = self.revealViewController;
[reveal revealToggleAnimated:YES];
}

Seguramente va a trabajar.

Intente Esto

[[[self revealViewController] view] endEditing:YES]

Añadir esto

- (void)revealController:(SWRevealViewController *)revealController didMoveToPosition:(FrontViewPosition)position 

o cualquier otro delegado método basado en su requisito.

verificación de la posición actual de frontview y escribir el código de ocultar el teclado en si la condición.

¿Estás seguro de que self.textField es el actual primer respondedor?Si se intenta renunciar a la primera respuesta en la UIGestureRecognizer delegado del método – gestureRecognizerShouldBegin:

Obviamente retorno de SÍ en esa función.

Edite el siguiente método en

SWRevealViewContoller.m

(IBAction)revealToggle:(id)sender {
    [self.view endEditing:YES];
    [self revealToggleAnimated:YES]; 
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top