1:实现效果scrollview中添加多个tableView还要实现左滑删除功能.如下图
项目代码:https://github.com/KylinSpace/TableViewsInTableView.git
![](https://img.haomeiwen.com/i1457860/497df34ab32298e7.png)
一:有的朋友可能会说这很简单,把scrollview的权scrollEnabled属性设置为NO就可以了.但是这就意着滚动scrollview切换控制器的功能要被砍掉了,用户体验上就差了那么一点了.
二:本着追求用户体验的思维,当然不能砍掉其中的一个功能喽,网上查找了些相关资料,可并不完美.实现起来还是有一些BUG.所以根据这个思路自己进行了调整.
实现方法思路如下:
第一:自定义一个scrollView 继承UISrollView
成为手势的代理,实现手势识别的代理方法
@interface KylinScrollView : UIScrollView <UIGestureRecognizerDelegate>
// 该方法实现,如果一个手势没有被识别,那么多个手势可以被识别
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
if (gestureRecognizer.state != 0) {
return YES;
}else{
return NO;
}
}
第二:所以tableView都加入这个scrollview中为避免多个手势同时被识别还需要在主控制器中实现如下两个方法:意思是当你开始滚动自定义的scrollView时时关闭tableView滚动,当你停止滚动动scrollView时开启tableView的滚动.以此来控制手势不会冲突.
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{ // 第一个方法
if (scrollView == self.contentView) { // self.contentview就是你自己自定义的scrollView
_oneVc.tableView.scrollEnabled = NO;
_twoVc.tableView.scrollEnabled = NO;
_threeVc.tableView.scrollEnabled = NO;
_fourVc.tableView.scrollEnabled = NO;
}
}
// 滚动切换控制器
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{ // 第二个方法
if (scrollView == self.contentView) { self.contentview就是你自己自定义的scrollView
_oneVc.tableView.scrollEnabled = YES;
_twoVc.tableView.scrollEnabled = YES;
_threeVc.tableView.scrollEnabled = YES;
_fourVc.tableView.scrollEnabled = YES;
}
}
第三:但实际上实现上面两个方法后还是会出现BUG,点击标题栏切换控制后,会出现tableView无法滑动的情况.那是因为点击标题栏切换控制器不会执行第二个方法.所以tableView滚动属性没有被激活;造成不能滚动;
所以必须在你执行标题按钮点击的那个方法里面再设置以下属性,打开tableView的滚动功能
_oneVc.tableView.scrollEnabled = YES;
_twoVc.tableView.scrollEnabled = YES;
_threeVc.tableView.scrollEnabled = YES;
_fourVc.tableView.scrollEnabled = YES;
新浪微博 @火柴大男人
网友评论