解决 MMDrawerController 滑动侧抽屉失效 在首页有UIScrollView的情况下
来源:互联网 发布:log4net数据库 编辑:程序博客网 时间:2024/05/18 06:28
前提准备:
- 集成一个MMDrawerController
- 重现这种状况
/* 以下为集成一个MMDrawerController */ HomeViewController *home = [[HomeViewController alloc] init]; // 使用MMDrawerController LeftMenuViewController *leftVC = [[LeftMenuViewController alloc] init]; self.drawerController = [[MMDrawerController alloc] initWithCenterViewController:home leftDrawerViewController:leftVC]; // 展开宽度 _drawerController.maximumLeftDrawerWidth = SRN_WIDTH * 0.8; // 打开手势 [_drawerController setOpenDrawerGestureModeMask:MMOpenDrawerGestureModeAll]; [_drawerController setCloseDrawerGestureModeMask:MMCloseDrawerGestureModeAll]; self.window.rootViewController = _drawerController;
接下来添加三个控制器的View到主控器上
UIScrollView *view = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, SRN_WIDTH, SRN_HEIGHT - HEIGHT)]; view.contentSize = CGSizeMake(SRN_WIDTH * 3, 0); // 去掉滚动条 view.showsVerticalScrollIndicator = NO; view.showsHorizontalScrollIndicator = NO; // 设置分页 view.pagingEnabled = YES; // 设置代理 view.delegate = self; // 去掉弹簧效果 view.bounces = NO; CGFloat height = SRN_HEIGHT - 49; // 添加子视图 MainViewController *main = [[MainViewController alloc] init]; main.view.frame = CGRectMake(0, 0, SRN_WIDTH, SRN_HEIGHT - HEIGHT); main.view.height = height; [self addChildViewController:main]; [view addSubview:main.view]; BestHotViewController *hot = [[BestHotViewController alloc] init]; hot.view.frame = CGRectMake(0, 0, SRN_WIDTH, SRN_HEIGHT - HEIGHT); hot.view.x = SRN_WIDTH; hot.view.height = height; [self addChildViewController:hot]; [view addSubview:hot.view]; CategoryViewController *cate = [[CategoryViewController alloc] init]; cate.view.frame = CGRectMake(0, 0, SRN_WIDTH, SRN_HEIGHT - HEIGHT); cate.view.x = SRN_WIDTH * 2; cate.view.height = height; [self addChildViewController:cate]; [view addSubview:cate.view]; [self.view addSubview:view]; self.scrollView = view;
分析: MMDC 中也使用这个手势 UIPanGestureRecognizer
, UIScrollView中手势拦截了 MMDC手势的生效.
解决办法:
@implementation XTScrollView- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{ if ([gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]) { UIPanGestureRecognizer *pan = (UIPanGestureRecognizer *)gestureRecognizer; if ([pan translationInView:self].x > 0.0f && self.contentOffset.x == 0.0f) { // 这里返回 NO return NO; } } return [super gestureRecognizerShouldBegin:gestureRecognizer];}@end
重新初始化ScrollView
XTScrollView *view = [[XTScrollView alloc] initWithFrame:CGRectMake(0, 0, SRN_WIDTH, SRN_HEIGHT - HEIGHT)];
最后感谢您的阅读, 如果感觉有帮助可以关注我 和我一起学习!
我是夏天, 暖暖的夏天
End
原文链接
文章取自我的博客 暖暖的夏天
可以关注我的订阅号 [夏天然后 ID: xt1005430006]
0 0
- 解决 MMDrawerController 滑动侧抽屉失效 在首页有UIScrollView的情况下
- 解决Dropshadow滤镜在父容器有背景图片的情况下失效的问题
- Gallery 在有按钮的情况下 相应左右滑动
- $.getJSON在ie下失效的情况
- 网易用的抽屉式导航MMDrawerController
- Android ListView在有checkbox的情况下上下滑动选中状态错误以及position错乱
- 解决ietester下ie8弹框失效的情况
- CSS3 在使用Modernizr的情况下导致animation失效
- easyui datagrid在fitColumns="true"的情况下失效
- MMDrawerController使不需要的页面不滑动
- IOS8下的UIScrollView有子控件时滑动经常不能滚动解决办法
- iOS中 超简单抽屉效果(MMDrawerController)的实现
- ios——(MMDrawerController)抽屉的实现
- iOS中 简单抽屉效果(MMDrawerController)的实现
- iOS中 超简单抽屉效果(MMDrawerController)的实现
- 抽屉效果第三方类:MMDrawerController的简单介绍
- 简单易用小技能:解决无线鼠标在有电情况下突然连接不了计算机的情况
- 侧滑抽屉MMDrawerController自定义侧滑手势
- OpenGL ES Shader 多重纹理
- 基于Canvas的能力图
- 第k短路的求法
- 如何利用github搭建一个个人网站
- 基于深层神经网络的命名实体识别技术
- 解决 MMDrawerController 滑动侧抽屉失效 在首页有UIScrollView的情况下
- PHP判断客户端是PCweb端还是移动手机端方法
- Live like a robot
- 日本語の会話ツールボックス
- linux-基础 unit5
- Android 代码混淆
- ubuntu VirtualBox 问题汇总
- 内核通知链-notifier_block
- Java 之 组合模式