当后视图显示时,我需要在前视图上禁用用户交互.发现一些其他人问同样的事情,但不能真正理解在哪里或如何实现我看到的代码.
- (void)revealController:(SWRevealViewController *)revealController willMoveToPosition:(FrontViewPosition)position { if(position == FrontViewPositionLeft) { self.view.userInteractionEnabled = YES; } else { self.view.userInteractionEnabled = NO; } } - (void)revealController:(SWRevealViewController *)revealController didMoveToPosition:(FrontViewPosition)position { if(position == FrontViewPositionLeft) { self.view.userInteractionEnabled = YES; } else { self.view.userInteractionEnabled = NO; } }
还发现几个其他链接
我有这个代码,但不能确定插入代码的正确位置.我已经尝试将其添加到我的前/后视图,也在SWRevealViewController方法中没有成功
感谢有人能指出我正确的方向.
解决方法
我最近想出了一个我想分享的解决方案
(对不起迟到2个月).
(对不起迟到2个月).
要在菜单打开时禁用前视图上的用户交互,我在MenuViewController中添加了以下代码:
在viewWillAppear:
[self.revealViewController.frontViewController.view setUserInteractionEnabled:NO];
并在viewWillDisappear:
[self.revealViewController.frontViewController.view setUserInteractionEnabled:YES];
这将禁用前视图控制器上的所有用户交互,这意味着滑动/点击手势关闭菜单也将被禁用.
现在,我创建了一个ParentViewController,并使所有的视图控制器(菜单项)成为它的一个子类.
在我的viewDidLoad上,我放了以下代码:
SWRevealViewController *revealController = [self revealViewController]; [revealController panGestureRecognizer]; [revealController tapGestureRecognizer];
如果您现在运行应用程序,则会出现Tap Gesture的工作原理(在Front View上点按可以关闭菜单),而不是Pan Gesture.我不知道为什么这是这样,但为了使幻灯片手势关闭您的菜单,在MenuViewController中添加以下代码:
在viewWillAppear:
[self.revealViewController.view addGestureRecognizer:self.revealViewController.panGestureRecognizer];
总而言之,您需要的是:
在你的MenuViewController上:
-(void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [self.revealViewController.frontViewController.view setUserInteractionEnabled:NO]; [self.revealViewController.view addGestureRecognizer:self.revealViewController.panGestureRecognizer]; } -(void)viewDidDisappear:(BOOL)animated { [super viewDidDisappear:animated]; [self.revealViewController.frontViewController.view setUserInteractionEnabled:YES]; }
并在您的菜单项目的视图控制器(您可以为他们所有的ParentViewController):
-(void)viewDidLoad { [super viewDidLoad]; SWRevealViewController *revealController = [self revealViewController]; [revealController panGestureRecognizer]; [revealController tapGestureRecognizer]; }
希望这可以帮助!