ios - 与 UITapGestureRecognizer 一起使用时,UISwipeGestureRecognizer 未注册滑动

标签 ios objective-c

我的 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/

相关文章:

objective-c - 来回切换 NSTextView 的文本存储

iphone - 很奇怪 - %i 对整数不起作用,%d 对吗?

ios - 批量删除请求使应用程序崩溃

ios - 如何在iOS中检测触发静音按钮事件

ios - 在 UINavigationController 堆栈 (IOS7) 的 UIWebview 中播放嵌入式视频的问题

ios - 单选按钮未选择和取消选择

ios - 将一个 NSObject 替换为另一个并保存在 coredata 中

ios - 来自 NSMutablearray 的 setheader 值

objective-c - 节省 boolean 值的问题

ios - 错误消息 '_BSMachError: (os/kern) invalid capability (20)'