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