iOS----手势冲突

项目中我们经常会用到弹框,如京东客服的订单功能,底部一个半透明view,view上添加一个tableview。点击tableviewcell发送订单消息,点击底部半透明view,回收弹框。


iOS----手势冲突_第1张图片
弹框

但是如果给view添加tap事件后,我们会发现cell的点击事件没有相应。这是因为tap点击事件与cell点击事件发生冲突。我们需要给tap添加代理,遵循协议。并且在协议方法中判断,当前点击的是哪个控件,如果是cell就返回no,如果是底部view就返回yes

//遵循协议
@interface MJConversationPopView ()
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(close)];
//设置代理
     tap.delegate = self;
     [self addGestureRecognizer:tap];
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
    // 点击了tableViewCell,view的类名为UITableViewCell,则不接收Touch点击事件
    if ([touch.view isKindOfClass:[UITableViewCell class]]) {
        return NO;
    }
    return YES;
}

你可能感兴趣的:(iOS----手势冲突)