2011-09-06 82 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