今天在项目中遇到这样一个问题,当UIScrollView中包含UITableView时,要实现UIScrollView滑动的同时UITableView也能实现左滑删除功能,说白了就是互不干扰,你干你的,我做我的,但是问题来了!因为二者都是具有滑动手势事件,导致出现冲突,系统不知道你到底是要做那件事,针对这种情况分析如下两点。
一:因为我们的动作是手势,但是系统不知道我们操作的那个,所以这里有个判断去识别到底触发了几个手势,创建一个A类继承UIScrollView,实现UIGestureRecognizerDelegate手势协议,然后重写即可
// Created by 尧的mac on 2017/5/2.
// Copyright © 2017年 com.ylz.cloudhos. All rights reserved.
//
#import "MyScrollview.h"
@implementation MyScrollview
//解决UIScrollView与左滑手势的冲突
//如果这个手势没有被识别,那么就多个gestureRecognizer可以同步识别
//然后用这个MyScrollView替换界面中的UIScrollview
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
if (gestureRecognizer.state != 0) {
return YES;
} else {
return NO;
}
}
二: 让我们自定义的类代替控制器中的UIScrollView,下面我们应该想到,当我滑动时,是不是应该判断代理方法中的UIScrollView是不是控制器中用到的UIScrollView,如果是就禁止其UIScrollView滑动,这样就能实现左滑删除
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
[self.view endEditing:YES];
[self.search resignFirstResponder];
//解决UIScrollView与左滑手势的冲突
if (scrollView == self.scrollView)
{
scrollView.scrollEnabled = NO;
}
}