RESideMenu UIScrollView冲突
2015-11-15 20:27
489 查看
最近的项目使用RESideMenu,侧滑弹出菜单,但是由于主页用的是UIScrollView,导致往右边用手指滑动侧滑的时候,不能打开侧滑菜单,由于UIScrollView先响应了UIPanGestureRecognizer手势,导致RESideMenu的手势失效,搜索了资料,暂时找到了两种解决方法。
第一种就是重写UIScrollView的panGestureRecognizer的代理方法,就是给UIScrollView增加一个分类。
第二种是给UIScrollView的panGestureRecognizer的属性增加一个tagrget,
[self.scrollView.panGestureRecognizeraddTarget:selfaction:@selector(scrollHandlePan:)];
这个手势增加自定义的响应方法,根据方法的签名,是可以增加多个响应方法的,以前不知道。以下代码是UIGestureRecognizer类里面添加响应方法的说明。
步骤如下,给你自己的变量scrollview增加监听响应的方法:
第一种就是重写UIScrollView的panGestureRecognizer的代理方法,就是给UIScrollView增加一个分类。
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { if ([otherGestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]) { id delegate = otherGestureRecognizer.delegate; if([delegate isKindOfClass:[RootViewController class]]) { return YES; } return NO; } else { return NO; } }但是这种方法只能响应从屏幕边缘的滑动手势。
第二种是给UIScrollView的panGestureRecognizer的属性增加一个tagrget,
[self.scrollView.panGestureRecognizeraddTarget:selfaction:@selector(scrollHandlePan:)];
这个手势增加自定义的响应方法,根据方法的签名,是可以增加多个响应方法的,以前不知道。以下代码是UIGestureRecognizer类里面添加响应方法的说明。
- (void)addTarget:(id)target action:(SEL)action; // add a target/action pair. you can call this multiple times to specify multiple target/actions后面的注释说明可以增加多对响应方法。以前一直不知道,哈哈学习了。
步骤如下,给你自己的变量scrollview增加监听响应的方法:
[self.scrollView.panGestureRecognizer addTarget:self action:@selector(scrollHandlePan:)];
-(void)scrollHandlePan:(UIPanGestureRecognizer*) panParam { CGPoint offset = [panParam translationInView:self.scrollView]; JJWLog(@"scrollHandlePan--------- %@",NSStringFromCGPoint(offset)); if(self.currentPage == 0) { if(offset.x > 0) { SEL selector = NSSelectorFromString(@"panGestureRecognized:"); RESideMenu *rootVC = [self sideMenuViewController]; #pragma clang diagnostic ignored "-Warc-performSelector-leaks" [rootVC performSelector:selector withObject:panParam]; #pragma clang diagnostic pop [rootVC performSelector:selector withObject:panParam]; } } }上面的逻辑就是判断scrollview是在哪一页,只有是在第0页,而且是向右滑动时,才能侧滑拉出侧滑菜单。由于RESideMenu的侧滑手势的响应函数手势私有的,所以用了pefrmSelector函数,上下那两句是为了消除编译时候的警告。这个方法的滑动效果很好,不知道正不正规。还有很多东西学习,加油。。。
相关文章推荐
- Swift中实现点击、双击、捏、旋转、拖动、划动、长按手势的类和方法介绍
- 基于Android中手势交互的实现方法
- IOS手势操作(拖动、捏合、旋转、点按、长按、轻扫、自定义)
- iOS开发中的几个手势操作实例分享
- 顶部可滚动小广告位 的封装 (UIScrollView+PageControl)
- ios7 中关于导航切换影响UIScrollView的问题
- 两个UIScrollVIew能够同步滚动
- UIScrollview要加载大量数据的时候,考虑到内存的消耗问题,我们不可能全部加载完。
- UIScrollview 无缝循环滚动实现
- iOS 使用手势UIGestureRecognizer对图像进行缩放、移动、旋转等操作
- 解决 IOS的UIScrollView的自动布局
- Android SlidingMenu 的实现
- UIScrollView无法滚动的问题
- cocos2d-x 一些有用的函数
- IOS UIscrollView 控件
- iOS- UIImageView/手势识别
- 关于NGUI中UITexture贴图自定义的shader文件在UISrollView中不报错的解决方案
- 缩放图片
- 基于一次手势训练的kinect 3D 动态手势识别(提纲)
- UIScrollView缩放