我的 View Controller 有两个识别器:
(viewDidLoad)
//Add gestures
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:nil];
[tap setDelaysTouchesBegan:YES];
tap.delegate = self;
[self.view addGestureRecognizer:tap];
UISwipeGestureRecognizer *leftSwipe = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:nil];
leftSwipe.delegate = self;
[self.view addGestureRecognizer:leftSwipe];
点击时我想做点什么,滑动时我想做点别的事情。然而,点击总是同时调用滑动手势和点击手势。
我怎样才能让它根据操作调用?
这是我试图辨别(但失败)的代码
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{
if ([gestureRecognizer isKindOfClass:[UISwipeGestureRecognizer class]]) {
UISwipeGestureRecognizer *rg = (UISwipeGestureRecognizer*)gestureRecognizer;
if (rg.direction == UISwipeGestureRecognizerDirectionRight && !self.itemsOnScreen) {
NSLog(@"swipe");
return YES;
}else{
return NO;
}
}
if (self.itemsOnScreen) {
self.itemsOnScreen = NO;
//Actions for my tap
return YES;
}else{
return NO;
}
}
最佳答案
您可以为点击和滑动设置不同的方法,并为每个方法设置操作,
你可以这样做,
-(void)viewDidLoad
{
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tap:)];
[tap setDelaysTouchesBegan:YES];
[self.view addGestureRecognizer:tap];
UISwipeGestureRecognizer *leftSwipe = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipe:)];
[self.view addGestureRecognizer:leftSwipe];
}
- (IBAction)tap:(id)sender
{
NSLog(@"taptap");
}
- (IBAction)swipe:(id)sender
{
NSLog(@"swipe");
}
我已经测试过这对我有用。
关于ios - 与 UITapGestureRecognizer 一起使用时,UISwipeGestureRecognizer 未注册滑动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20122201/