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];