SWRevealViewController: Remove interaction on frontview when rearview is revealed

前端 未结 15 1301
迷失自我
迷失自我 2020-12-24 10:05

I need to disable user interaction on front view when rear view is revealed. Found some others asking the same thing but can\'t really understand where or how to implement t

15条回答
  •  自闭症患者
    2020-12-24 10:50

    In viewWillAppear method of your menu items controller, Just create an overlay button on the front view and set action to revealToggle: of revealViewController

    -(void)viewWillAppear:(BOOL)animated 
    {
        [super viewWillAppear:animated];
        overlayView = [UIButton buttonWithType:UIButtonTypeCustom];
        overlayView.frame = self.revealViewController.frontViewController.view.bounds;
        overlayView.backgroundColor = [UIColor colorWithWhite:0.5 alpha:0.8];
        overlayView.tag = 999;
        [overlayView addTarget:self.revealViewController action:@selector(revealToggle:) forControlEvents:UIControlEventTouchUpInside];
        [overlayView addTarget:self.revealViewController action:@selector(revealToggle:) forControlEvents:UIControlEventTouchDragOutside];
        [self.revealViewController.frontViewController.view addSubview:overlayView];
    }
    

    In revealTogglle method remove the overlay button if any:

    - (void)revealToggleAnimated:(BOOL)animated
    {
        UIButton *overlayView = (UIButton*)[self.view viewWithTag:999];
        if (overlayView) {
            [overlayView removeFromSuperview];
            overlayView = nil;
        }
        // rest of the code...
    }
    

提交回复
热议问题