UISwipeGestureRecognizer 滑动手势方向的判定

今天根据视频教程写 UISwipeGestureRecognizer 来判断滑动手势的方向时,发现无论怎么滑动,控制总是打印向左滑动,代码如下:

UISwipeGestureRecognizer* swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipe:)];
swipe.direction = UISwipeGestureRecognizerDirectionLeft | UISwipeGestureRecognizerDirectionRight;
[iView addGestureRecognizer:swipeAct];

但实际上这是一个大大的坑!!!


正确的做法应该是分别创建两个方向的轻扫手势,代码如下:

UISwipeGestureRecognizer* leftSwipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeAct:)];
UISwipeGestureRecognizer* rightSwipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeAct:)];
leftSwipe.direction = UISwipeGestureRecognizerDirectionLeft;
rightSwipe.direction = UISwipeGestureRecognizerDirectionRight;
[iView addGestureRecognizer:leftSwipe];
[iView addGestureRecognizer:rightSwipe];

swipeAct 方法的实现:

- (void)swipeAct:(UISwipeGestureRecognizer*) swipe
{
    if(swipe.direction == UISwipeGestureRecognizerDirectionLeft)
        NSLog(@"向左滑动,%lu",swipe.direction);
    else if(swipe.direction == UISwipeGestureRecognizerDirectionRight)
        NSLog(@"向右滑动,%lu",swipe.direction);
}

另外,如果对同一个视图对象添加多个手势而导致手势冲突的话,可以通过调用 - (void)requireGestureRecognizerToFail:(UIGestureRecognizer *)otherGestureRecognizer 该函数来解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值