SWRevealViewController在滑动时closures键盘

我在我的应用程序中使用SWRevealViewController ,我遇到了问题。 我在场景中有一个文本框,如果在键盘打开时向左滑动,出现菜单,但不会closures键盘。 我如何解雇左键滑动键盘? 我努力了

UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(dismissKeyboard)]; swipe.direction = UISwipeGestureRecognizerDirectionLeft; [self.view addGestureRecognizer:swipeRecognizer]; -(void)dismissKeyboard { [self.textField resignFirstResponder]; } 

但它不工作,我想因为我已经使用panViewestcontroller的panGestureRecognizer即[self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer];

我也使用UITapGestureRecognizer但它只适用于轻拍不刷卡。 我希望这个问题有一个非常简单的解决scheme,任何人都可以帮忙吗?

谢谢,

我想你需要在应用程序委托中使用委托方法之一,所以可能委托方法在那里,但你需要像下面的东西

不要添加任何手势

appDelegate使用这个委托,删除所有以#if开始的macros不需要

在每次SWRevealViewController移动或切片的委托方法SWRevealViewController下的应用程序委托中放置一个断点。

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

有一个警告,它仍然工作把放点和检查希望这有助于你…

FrontViewController.h

  -(void)dismissKeyboard; //add this 

FrontViewController.m

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

我有同样的问题。

我加了self.revealController.delegate = self; 到我用作前视图的View Controller,并调用委托方法。

我用- (void)revealController:(SWRevealViewController *)revealController willMoveToPosition:(FrontViewPosition)position{}委托方法,我写了[textField endEditing:YES]; 在这个委托方法。

还添加了<SWRevealViewControllerDelegate>到我的ViewController.h,这是我的前视图。

首先你需要用你自定义的方法来replace这个方法:

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

而不是在你的方法:

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

它一定会工作。

尝试这个

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

join这个

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

或者根据您的要求任何其他代表方法。

检查前视图的当前位置,并在if条件下编写隐藏键盘的代码。

你确定self.textField是当前的第一响应者吗? 如果您尝试在UIGestureRecognizer委托的方法– gestureRecognizerShouldBegin:退出第一个响应者– gestureRecognizerShouldBegin:

显然在该函数中返回YES。

尝试这个:

请在SWRevealViewContoller.m中添加以下代码 – (BOOL)_panGestureShouldBegin

[self.view endEditing:YES];