UISwipeGestureRecognizer 滑动手势方向的判定

xiaoxiao2021-02-28  97

今天根据视频教程写 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 该函数来解决

转载请注明原文地址: https://www.6miu.com/read-66483.html

最新回复(0)