【iOS开发解决Tableview(CollectionView)上子视图和父试图手势冲突】

       我们由于业务需要,经常要在Tableview或者CollectionView的cell上添加一些带有手势的子视图,然后添加后会发现子视图的手势会和Tableview(CollectionView)的滚动事件发生手势冲突导致各种bug。      

        那么怎么解决这种冲突呢?  经过查阅资料发现,所有的点击以及手势事件都会响应UIView的这个方法:

- (nullable UIView *)hitTest:(CGPoint)point withEvent:(nullable UIEvent *)event;

        所以我们可以写一个Tableview(CollectionView)的子类,然后再子类中重写该方法:

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {

    UIView *view = [super hitTest:point withEvent:event];

    if([view isKindOfClass:[RPMPTZEntityView class]]) {

        //如果接收事件view是UISlider,则scrollview禁止响应滑动

        self.scrollEnabled = NO;

    }

    else {   //如果不是,则恢复滑动

        self.scrollEnabled = YES;

    }

    return view;

}

	这样在手势触发响应时就可以判断如果是子视图RPMPTZEntityView手势触发就暂停滚动事件,如果是其他视图响应则继续响应滚动事件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值