UIScrollView滑动与UITableView左滑删除冲突问题解决方案

今天在项目中遇到这样一个问题,当UIScrollView中包含UITableView时,要实现UIScrollView滑动的同时UITableView也能实现左滑删除功能,说白了就是互不干扰,你干你的,我做我的,但是问题来了!因为二者都是具有滑动手势事件,导致出现冲突,系统不知道你到底是要做那件事,针对这种情况分析如下两点。

a:因为我们的动作是手势,但是系统不知道我们操作的那个,所以这里有个判断去识别到底触发了几个手势,创建一个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;
    }
}

b:让我们自定义的类代替控制器中的 UIScrollView,下面我们应该想到,当我滑动时,是不是应该判断代理方法中的UIScrollView是不是控制器中用到的UIScrollView,如果是就禁止其UIScrollView滑动,这样就能实现左滑删除

-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
    [self.view endEditing:YES];
    [self.search resignFirstResponder];
    
    //解决UIScrollView与左滑手势的冲突
    if (scrollView == self.scrollView)
    {
        scrollView.scrollEnabled = NO;
    }
}



猜你喜欢

转载自blog.csdn.net/JSON_6/article/details/71081947
今日推荐