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

来源:互联网 发布:电视软件(无需联网) 编辑:程序博客网 时间:2024/06/06 03:28

返回手势和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


0 0
原创粉丝点击