Question

I am using SWRevealViewController in my app and I am having a problem. I have a textfield in a scene, if I swipe left when the keyboard is open, the menu appears but it does not dismiss the keyboard. How do I dismiss keyboard on left swipe?

I have tried

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

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

but it does not work, I think because I am already using a panGestureRecognizer for revealViewcontroller i.e. [self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer];

I am also using UITapGestureRecognizer but it only works for tap not for swipe.

Was it helpful?

Solution

i think u need to use one of the delegate method in the app delegate there are so may delegate methods are there but u need do somthing like below

dont add any gestures

use this delegate in the appDelegate delete all the macros begins with #if don`t need that

put a break-point in app delegate to this method below delegate method celled each time SWRevealViewController moved or sliced ..

- (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
      }

   }
}

there is one warning still it works put break point and check hope this helps u ...

in FrontViewController.h

  -(void)dismissKeyboard; //add this 

in the FrontViewController.m

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

OTHER TIPS

I had the same problem.

I added self.revealController.delegate = self; to my View Controller which I used as Front View.And delegate method get called.

I used - (void)revealController:(SWRevealViewController *)revealController willMoveToPosition:(FrontViewPosition)position{} delegate method and I wrote [textField endEditing:YES]; in this delegate method.

Also added <SWRevealViewControllerDelegate> to my ViewController.h which is my Front View.

Try this:

Please add the below code in SWRevealViewContoller.m in the method -(BOOL)_panGestureShouldBegin

[self.view endEditing:YES];

First of all you need to replace the revealToggle: method by your custom method like this:

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

self.navigationItem.leftBarButtonItem = barBtn;

And than in your method:

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

It will surely work.

Try This

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

Add this in

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

or any other delegate method based on your requirement.

check current position of frontview and write code of hiding keyboard in if condition.

Are you sure that self.textField is the current first responder? If you are try to resign the first responder in the UIGestureRecognizer delegate's method – gestureRecognizerShouldBegin:

Obviously return YES in that function.

Edit the below method in

SWRevealViewContoller.m

(IBAction)revealToggle:(id)sender {
    [self.view endEditing:YES];
    [self revealToggleAnimated:YES]; 
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top