如何识别所有4个方向的滑动?

elp*_*elp 26 iphone objective-c ipad uigesturerecognizer uiswipegesturerecognizer

我需要识别所有方向的滑动(向上/向下/向左/向右).不是同时,但我需要认识到它们.

我试过了:

  UISwipeGestureRecognizer *Swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(SwipeRecognizer:)];
  Swipe.direction = (UISwipeGestureRecognizerDirectionLeft | 
                     UISwipeGestureRecognizerDirectionRight |
                     UISwipeGestureRecognizerDirectionDown | 
                     UISwipeGestureRecognizerDirectionUp);
  [self.view addGestureRecognizer:Swipe];
  [Swipe release];
Run Code Online (Sandbox Code Playgroud)

但没有出现 SwipeRecognizer

这是SwipeRecognizer的代码:

- (void) SwipeRecognizer:(UISwipeGestureRecognizer *)sender {
  if ( sender.direction == UISwipeGestureRecognizerDirectionLeft )
    NSLog(@" *** SWIPE LEFT ***");
  if ( sender.direction == UISwipeGestureRecognizerDirectionRight )
    NSLog(@" *** SWIPE RIGHT ***");
  if ( sender.direction == UISwipeGestureRecognizerDirectionDown )
    NSLog(@" *** SWIPE DOWN ***");
  if ( sender.direction == UISwipeGestureRecognizerDirectionUp )
    NSLog(@" *** SWIPE UP ***");
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?如何为我的滑动对象分配所有不同的方向?

jba*_*100 21

你设置这样的方向

  UISwipeGestureRecognizer *Swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(SwipeRecognizer:)];
  Swipe.direction = (UISwipeGestureRecognizerDirectionLeft | 
                     UISwipeGestureRecognizerDirectionRight |
                     UISwipeGestureRecognizerDirectionDown | 
                     UISwipeGestureRecognizerDirectionUp);
Run Code Online (Sandbox Code Playgroud)

当你得到回调时,这就是方向,所以你的所有测试都失败是正常的.如果你有

- (void) SwipeRecognizer:(UISwipeGestureRecognizer *)sender {
  if ( sender.direction | UISwipeGestureRecognizerDirectionLeft )
    NSLog(@" *** SWIPE LEFT ***");
  if ( sender.direction | UISwipeGestureRecognizerDirectionRight )
    NSLog(@" *** SWIPE RIGHT ***");
  if ( sender.direction | UISwipeGestureRecognizerDirectionDown )
    NSLog(@" *** SWIPE DOWN ***");
  if ( sender.direction | UISwipeGestureRecognizerDirectionUp )
    NSLog(@" *** SWIPE UP ***");
}
Run Code Online (Sandbox Code Playgroud)

测试会成功(但都会成功,所以你不会从中得到任何信息).如果要区分不同方向的滑动,则需要单独的手势识别器.


编辑

正如评论中指出的那样,请看这个答案.显然即使这不起作用.您应该只使用一个方向创建滑动,以使您的生活更轻松.

  • 是.您创建的手势识别器会告诉您在其中一个方向上发生了滑动但不是哪个方向. (3认同)
  • 最后一句,"如果你想区分不同方向的滑动,你需要单独的手势识别器." 真的节省了我的时间. (2认同)