为嵌套在左右滑动的UIScrollview上的UITableView增加滑动删除
2015-11-27 17:00
495 查看
转载自: http://www.tuicool.com/articles/jyU3Yzv
有一个界面,底部是一个UIScrollview,然后通过addSubView的方式 add了左右2个UITableView。可以左右滑动。一切都很正常,但是问题来了,今天要给右边的tableview增加滑动删除功能。 看似简单,但是有一个蛋疼的问题,这时滑动删除的事件被底部的UIScrollview给响应了,cell根本拿不到这个滑动手势。
想想就蛋疼啊,tableView是UIScrollview 的子类,cell里面的ContentView好像在iOS7.0之后也是UIScrollview ,再加底部一个UIScrollview,这滑动手势事件该怎么传递好呢,给谁都不行啊。 给了底部,那么就没法滑动删除,给了cell那么正常的左右滑动又不行了。
经过一番google,资料还真不多。 最后使用一个方法:让cell 和 底部的UIScrollview都响应这个滑动手势。亲测有效.
首先:继承UIScrollview,遵循UIGestureRecognizerDelegate协议
然后重写下面方法:
这里大致意思就是:如果这个手势没有被识别,那么就多个gestureRecognizer可以同步识别
然后用这个MyScrollView替换界面中的底部UIScrollview。这样就OK啦。
但是这样又带来另外一个问题,在左右滑动时,tableView可以同时上下滑动。哎,不怪人家,都说了手势事件大家都可以响应嘛。。。
不过这个好解决:在viewController中处理下滚动时的事件
这样左右滚动时,tableview就没法上下滚动了。左右滚动结束,再允许tableView上下滚动。
这样暂时解决了问题吧,原理也不细说了,因为我也没有去细究。注意,这里解决的是给右边的tableView增加滑动删除,如果你的需求是给左边的tableView增加滑动删除,那么解决方案是:把产品经理揍一顿[笑cry]
有一个界面,底部是一个UIScrollview,然后通过addSubView的方式 add了左右2个UITableView。可以左右滑动。一切都很正常,但是问题来了,今天要给右边的tableview增加滑动删除功能。 看似简单,但是有一个蛋疼的问题,这时滑动删除的事件被底部的UIScrollview给响应了,cell根本拿不到这个滑动手势。
想想就蛋疼啊,tableView是UIScrollview 的子类,cell里面的ContentView好像在iOS7.0之后也是UIScrollview ,再加底部一个UIScrollview,这滑动手势事件该怎么传递好呢,给谁都不行啊。 给了底部,那么就没法滑动删除,给了cell那么正常的左右滑动又不行了。
经过一番google,资料还真不多。 最后使用一个方法:让cell 和 底部的UIScrollview都响应这个滑动手势。亲测有效.
首先:继承UIScrollview,遵循UIGestureRecognizerDelegate协议
@interface MyScrollview : UIScrollView<UIGestureRecognizerDelegate>
然后重写下面方法:
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { if (gestureRecognizer.state != 0) { return YES; } else { return NO; } }
这里大致意思就是:如果这个手势没有被识别,那么就多个gestureRecognizer可以同步识别
然后用这个MyScrollView替换界面中的底部UIScrollview。这样就OK啦。
但是这样又带来另外一个问题,在左右滑动时,tableView可以同时上下滑动。哎,不怪人家,都说了手势事件大家都可以响应嘛。。。
不过这个好解决:在viewController中处理下滚动时的事件
#pragma mark - ScrollView delegate - (void)scrollViewDidScroll:(UIScrollView *)scrollView { if (scrollView == _contentView) { self.leftTableView.scrollEnabled = NO; self.rightTableView.scrollEnabled = NO; } } - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { if (scrollView == _contentView) { self.leftTableView.scrollEnabled = YES; self.rightTableView.scrollEnabled = YES; } }
这样左右滚动时,tableview就没法上下滚动了。左右滚动结束,再允许tableView上下滚动。
这样暂时解决了问题吧,原理也不细说了,因为我也没有去细究。注意,这里解决的是给右边的tableView增加滑动删除,如果你的需求是给左边的tableView增加滑动删除,那么解决方案是:把产品经理揍一顿[笑cry]
相关文章推荐
- 颜色模型
- Machine Learning week 9 quiz: Anomaly Detection
- HFTP Guide
- HDFS Permissions Guide
- HDFS配额指南(HDFS Quotas Guide)
- Offline Image Viewer Guide
- Offline Edits Viewer Guide
- ViewFs Guide
- 自定义UICollectionViewController只读UICollectionViewLayout
- Android uiautomator(1)-创建工程例子
- EasyUI - 自定义页面等待插件
- NGUI 的grid提高显示性能
- easyUI框架之学习3--表格datagrid
- easyUI框架之学习2--添加左侧导航栏
- ValueError: --enable-jpeg requested but jpeg not found, aborting.
- NGUI 使guid滑动到指定的位置 【3.5有效】
- IOS拍照或者相册 uiimage裁剪
- ios学习--iphone 防止键盘挡住UITextField解决方案
- [Built-in Functions] - Z
- [Built-in Functions] - X