ios – SWRevealViewController:当后视显示时,删除前视图上的交互

前端之家收集整理的这篇文章主要介绍了ios – SWRevealViewController:当后视显示时,删除前视图上的交互前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当后视图显示时,我需要在前视图上禁用用户交互.发现一些其他人问同样的事情,但不能真正理解在哪里或如何实现我看到的代码.

例如:我从link发现这个代码,

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

还发现几个其他链接

> Link1
> Link2
> Link3

我有这个代码,但不能确定插入代码的正确位置.我已经尝试将其添加到我的前/后视图,也在SWRevealViewController方法中没有成功

感谢有人能指出我正确的方向.

解决方法

我最近想出了一个我想分享的@R_301_463@案
(对不起迟到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];
}

希望这可以帮助!

猜你在找的iOS相关文章