MMDrawerController.m 重寫手勢識別區(qū)域
-(BOOL)isPointContainedWithinCenterViewContentRect:(CGPoint)point{
CGRect centerViewContentRect = CGRectMake(0, 0, 50, self.centerContainerView.frame.size.height);
//修改后的意思是把觸發(fā)打開抽屜手勢識別放在屏幕左側(cè)寬50喜庞,高為屏幕高度的rect中
centerViewContentRect = CGRectIntersection(centerViewContentRect,self.childControllerContainerView.bounds);
return (CGRectContainsPoint(centerViewContentRect, point) &&
[self isPointContainedWithinNavigationRect:point] == NO);
}
如果想要只在一個(gè)視圖控制器里顯示抽屜效果修改如下
//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.在想要開啟滑動(dòng)的視圖的方法里面這樣寫
//試圖將要顯示時(shí)打開開啟和關(guān)閉手勢
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self.mm_drawerController setOpenDrawerGestureModeMask:MMOpenDrawerGestureModeAll];
[self.mm_drawerController setCloseDrawerGestureModeMask:MMCloseDrawerGestureModeAll];
}
//視圖將要消失時(shí)關(guān)閉打開和關(guān)閉手勢
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[self.mm_drawerController setOpenDrawerGestureModeMask:MMOpenDrawerGestureModeNone];
[self.mm_drawerController setCloseDrawerGestureModeMask:MMCloseDrawerGestureModeNone];
}