解决MMDrawerController打开抽屉手势与主视图子V

2016-12-28  本文已影响52人  孟豊Mike

MMDrawerController.m 重写手势识别区域

-(BOOL)isPointContainedWithinCenterViewContentRect:(CGPoint)point{
    
    CGRect centerViewContentRect = CGRectMake(0, 0, 50, self.centerContainerView.frame.size.height);  
   //修改后的意思是把触发打开抽屉手势识别放在屏幕左侧宽50,高为屏幕高度的rect中

    centerViewContentRect = CGRectIntersection(centerViewContentRect,self.childControllerContainerView.bounds);
    
    return (CGRectContainsPoint(centerViewContentRect, point) &&
            
            [self isPointContainedWithinNavigationRect:point] == NO);
}

如果想要只在一个视图控制器里显示抽屉效果修改如下


//1.修改框架里面的方法
-(MMDrawerController*)mm_drawerController{
    //    if([self.parentViewController isKindOfClass:[MMDrawerController class]]){
    //        return (MMDrawerController*)self.parentViewController;
    //    }
    //    else if([self.parentViewController isKindOfClass:[UINavigationController class]] &&
    //            [self.parentViewController.parentViewController isKindOfClass:[MMDrawerController class]]){
    //        return (MMDrawerController*)[self.parentViewController parentViewController];
    //    }
    //    else{
    //        return nil;
    //    }
    
    UIViewController *parentCtrl = self.parentViewController;
    while (parentCtrl) {
        
        if ([parentCtrl isKindOfClass:[MMDrawerController class]]) {
            return (MMDrawerController *)parentCtrl;
        }
        
        parentCtrl = parentCtrl.parentViewController;
    }
    
    return nil;
    
}

//2.在想要开启滑动的视图的方法里面这样写
//试图将要显示时打开开启和关闭手势
- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    
    [self.mm_drawerController setOpenDrawerGestureModeMask:MMOpenDrawerGestureModeAll];
    [self.mm_drawerController setCloseDrawerGestureModeMask:MMCloseDrawerGestureModeAll];
    
}

//视图将要消失时关闭打开和关闭手势
- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    
    [self.mm_drawerController setOpenDrawerGestureModeMask:MMOpenDrawerGestureModeNone];
    [self.mm_drawerController setCloseDrawerGestureModeMask:MMCloseDrawerGestureModeNone];
}

上一篇下一篇

猜你喜欢

热点阅读