使用抽屉MMDrawerController和系统手势interactivePopGestureRecognizer冲突的解决方法(转)

在使用抽屉菜单 MMDrawerController的过程中,发现经常遇到一个问题:
1.在不该出现侧滑的地方出现了侧滑;
2.侧滑后pushviewcontroller卡住;
排查了很久找到了问题,是navigationController中得interactivePopGestureRecognizer和MMDrawerController两者冲突导致的。
我们通常开启边缘返回手势的方法是 self.navigationController.interactivePopGestureRecognizer.delegate = self; 这个就相当于开启了一个手势:在屏幕最左侧向最右侧滑动时会popViewController。

//添加边缘返回手势  
if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {  
    self.navigationController.interactivePopGestureRecognizer.delegate = (id)self;  
}  

对于MMDrawerController我们如果开启了手势打开/关闭:

[drawerControlller setMaximumRightDrawerWidth:200.0];  
[drawerControlller setOpenDrawerGestureModeMask:MMOpenDrawerGestureModeAll];  
[drawerControlller setCloseDrawerGestureModeMask:MMCloseDrawerGestureModeAll];  
[[MMExampleDrawerVisualStateManager sharedManager] setLeftDrawerAnimationType:MMDrawerAnimationTypeSlideAndScale];  

两者如果都同时开启,频繁滑动侧滑菜单有时就会出现PushViewController没有响应的情况,
解决方法:
1.对于MMDrawderController:
在开启侧滑功能的viewcontroller.view消失的时候关闭侧滑功能,出现的时候再打开:

- (void) viewDidAppear:(BOOL)animated{  
    [super viewDidAppear:animated];  
    self.navigationController.interactivePopGestureRecognizer.enabled = NO;  
    [[MPCDrawerControlller sharedDrawerController] setOpenDrawerGestureModeMask:MMOpenDrawerGestureModeAll];  
}  
- (void)viewDidDisappear:(BOOL)animated  
{  
    [super viewDidDisappear:animated];  
    self.navigationController.interactivePopGestureRecognizer.enabled = YES;  
    [[MPCDrawerControlller sharedDrawerController] setOpenDrawerGestureModeMask:MMOpenDrawerGestureModeNone];  
}  
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,451评论 4 61
  • 首先iOS7以后系统默认自带了侧滑功能,当用户在界面的左边滑动的时候,就会有侧滑功能。 但是如果我们从从导航控制器...
    稻草人12138阅读 14,192评论 0 3
  • 记录下来以便未来看看现在的自己! 在任何的有效工作里,一个好的工具都是必不可少的! 市面上有很多的文本编辑器...
    御姐优阅读 3,165评论 0 2
  • 接上一个教程继续... 6. 定义手势动作 我们需要通过触摸滑动来操作游戏,所以就需要定义上下左右的手势动作。这就...
    很前端的前端阅读 4,316评论 5 2
  • 把衣服放进洗衣机 红的 黄的 黑的 打赌它们不串色 搅啊搅 水洗出一个冬季
    蜗牛sister阅读 2,707评论 2 2

友情链接更多精彩内容