今天根据视频教程写 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 该函数来解决
本文介绍了在iOS开发中如何正确地使用UISwipeGestureRecognizer来识别滑动手势的方向,并提供了具体的代码示例。通过创建单独的手势对象分别处理左右滑动,可以避免手势识别错误的问题。
1556

被折叠的 条评论
为什么被折叠?



