2011-09-06 86 views
1

我要处理的双重滑动手势我在别处声明的方法:传递UIGestureRecognizer参数选择器

-(void)handleDoubleSwipe:(UISwipeGestureRecognizer *)recognizer 
{ 
    NSLog(@"double swiped"); 
    if(recognizer.direction==UISwipeGestureRecognizerDirectionLeft) { 
     NSLog(@"swiped left"); 
    } 
    if(recognizer.direction==UISwipeGestureRecognizerDirectionRight) { 
     NSLog(@"swiped right"); 
    } 

} 

,我在其他地方把它声明为:

UISwipeGestureRecognizer *doubleSwipe=[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleSwipe:)]; 
    doubleSwipe.numberOfTouchesRequired=2; 
    doubleSwipe.delegate=self; 
    doubleSwipe.direction=UISwipeGestureRecognizerDirectionRight | UISwipeGestureRecognizerDirectionLeft; 

的问题是,我无法为选择器提供任何参数。它只是不允许我和自动完成返回0完成。我如何将doubleSwipe手势添加到选择器的参数中?现在,handleDoubleSwipe方法确实被调用,NSLog显示“双击”,但不显示向左或向右滑动。

回答

1

direction识别器的属性告诉您识别器处理的方向(与您配置的方向一样),而不是实际滑动的方向。

您可以使用locationInView:方法与state属性组合来确定滑动开始和结束的位置。

尽管在每个方向上使用一个识别器可能会更容易。

+1

我认为,最好的解决方案是创建一对手势识别器来处理这个问题。 – D33pN16h7