手势冲突---UITableView删除, 自定义侧滑返回,UIScroll的手势冲突

在适配iOS6并使用MLNavigationController实现侧滑返回手势时,遇到了手势与UITableView滑动删除的冲突问题。原生UINavigationController不会出现此类问题。解决办法是通过自定义UIScrollView类别来调整冲突,但可能影响其他scrollView。为了不影响撤销删除操作,可以缩小侧滑返回手势的区域。参考链接提供了更多手势冲突处理信息。

返回手势和UITableView删除的冲突

今天遇到一个手势冲突的问题在这里记录一下

由于还要适配ios6 所以就从网上找了个侧滑返回的类

MLNavigationController

但是这个类手势和UITableView的滑动删除是有冲突的 所以UITableView的手势被干掉了(原生的UINavigationcontroller不会)

冲突项目在这里

解决办法就是写个scrollView的category重写

#import "UIScrollView+AllowPanGestureEventPass.h"

@implementation UIScrollView (AllowPanGestureEventPass)

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    if ([gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]] || [otherGestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]] ) {
        return YES;
    }
    return NO;
}



@end
判断是否是pan手势如果是让其他的pan手势同时响应  这样既能响应返回的那个返回的pan手势 又能响应UITableView上的pan手势

但是这么写会影响你项目中的其他UIScrollView 而且会出现右滑撤销删除和右滑返回的一起执行

而我比较希望的是 在这个VC里面的是侧滑的区域变小一点别影响我撤销删除的操作

所以我就这么改

#pragma mark - UIGestureRecognizerDelegate
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
    if (self.viewControllers.count <= 1 || !self.canDragBack) return NO;
        if ([[self.viewControllers lastObject] isKindOfClass:[CollisionGestureViewController class]]) {
           CGPoint point = [gestureRecognizer locationInView:self.view];
            NSLog(@"%@", NSStringFromCGPoint(point));
            if (point.x < self.view.frame.size.width / 3) {
                return YES;
            }
            else {
                return NO;
            }
            return NO;
        }
    return YES;
}


这里面还有一个其他的例子介绍手势冲突的

http://blog.csdn.net/wsxzk123/article/details/44229559


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值