【问题标题】:Get swipe direction in Cocoa Touch在 Cocoa Touch 中获取滑动方向
【发布时间】:2011-03-16 07:20:27
【问题描述】:

我试图捕捉一个手势,但它不起作用。这是我的代码:

UISwipeGestureRecognizer *recognizer;
    recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom:)];
    [recognizer setDirection:(UISwipeGestureRecognizerDirectionRight | UISwipeGestureRecognizerDirectionLeft)];
    [[self view] addGestureRecognizer:recognizer];
    [recognizer release]; 

-(void)handleSwipeFrom:(UISwipeGestureRecognizer *)recognizer {
    NSLog(@"get gesture");
    if (recognizer.direction == UISwipeGestureRecognizerDirectionRight) {
        NSLog(@"get gesture right");
    }
    if (recognizer.direction == UISwipeGestureRecognizerDirectionLeft) {
        NSLog(@"get gesture Left");
    }
}

它总是得到一个手势,但不能识别方向。我也试过if(recognizer.direction){NSLog(@"get gesture");},它也有效,所以我不明白我在哪里犯了错误。

感谢您的帮助。

【问题讨论】:

  • 您还应该使用 NSLog 识别器.direction 来调试它检测到的内容。
  • 我试了但是失败了,说它不是字符串...
  • 参数 1 中的类型不兼容
  • 试试这个 if (recognizer.direction == 0) {NSLog(@"get gesture right"); }
  • 我也试过了,但无论我向左或向右上下滑动,它总是返回 3

标签: objective-c xcode cocoa-touch uigesturerecognizer gesture


【解决方案1】:

您没有正确使用UISwipeGestureRecognizer。它的方向始终是您设置的方向(在本例中为 UISwipeGestureRecognizerDirectionRight | UISwipeGestureRecognizerDirectionLeft 或 3)。

如果您想捕捉可以区分的左右滑动,则必须为每个滑动设置单独的识别器。 Apple 在他们的 SimpleGestureRecognizers sample 中做到了这一点。

【讨论】:

    【解决方案2】:

    您只需更改添加手势识别器的代码即可。

    UISwipeGestureRecognizer *leftRecognizer;
    leftRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom:)];
    [leftRecognizer setDirection: UISwipeGestureRecognizerDirectionLeft];
    [[self view] addGestureRecognizer:leftRecognizer];
    [leftRecognizer release];
    
    UISwipeGestureRecognizer *rightRecognizer;
    rightRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom:)];
    [rightRecognizer setDirection: UISwipeGestureRecognizerDirectionRight];
    [[self view] addGestureRecognizer:rightRecognizer];
    [rightRecognizer release];  
    

    【讨论】:

      【解决方案3】:

      UISwipe... 是 iOS。但是对于 Cocoa,您可以在视图类中使用 -swipeWithEvent:。请参阅以下位置的文档: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/EventOverview/HandlingTouchEvents/HandlingTouchEvents.html#//apple_ref/doc/uid/10000060i-CH13-SW10

      【讨论】:

      【解决方案4】:

      gypsicoder 和 paulbailey 的答案都是正确的。我的更详细的解决方案,见:https://stackoverflow.com/a/16810160/936957

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-09
        • 1970-01-01
        • 1970-01-01
        • 2015-10-03
        相关资源
        最近更新 更多