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