2012-03-14 111 views
6

我错过了一些简单的东西,请帮我理解一下。设置SwipeGestureRecognizer,需要说明

控制器建立

UIGestureRecognizer *swipe = [[UIGestureRecognizer alloc] 
      initWithTarget:gameView action:@selector(handleSwipeFrom:)]; 
[gameView addGestureRecognizer:swipe]; 

GameView设置

@interface GameView : UIView<UIGestureRecognizerDelegate> 

它还声明

- (IBAction) handleSwipeFrom:(UISwipeGestureRecognizer*)recognizer; 

并将其设置为

- (IBAction)handleSwipeFrom:(UISwipeGestureRecognizer*)recognizer { 
    NSLog(@" .............. Swipe detected!! ..................."); 
} 

故事板链接UIGestureRecognizer这个IBACtion,并设置如下: enter image description here

我有点担心,UIGestureRecognizer出现一个控制器的下方,而不是视图,如图所示,但我可以似乎无法纠正它。

enter image description here

当应用程序建立起来,挥笔,但无法识别。

请提出我在这里想念的是什么,以及我是否正确设置事情。

+0

你INITING一个UIGestureRecognizer而不是UISwipeGestureRecognizer的次为一 – Brodie 2012-03-14 01:11:32

回答

16

您正在设置两个单独的手势识别器。一个代码可能什么也不做,另一个代码可能没有目标。

在代码中,你应该初始化轻扫手势识别,像这样:

UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:gameView action:@selector(handleSwipeFrom:)]; 
// And assuming the "Up" direction in your screenshot is no accident 
swipe.direction = UISwipeGestureRecognizerDirectionUp; 

或者,当然了,你可以在故事板连接刷卡识别。这很容易通过右键单击手势识别器并将SentActions连接到handleSwipeFrom:方法来完成,或者类似地,您可以从右侧的连接检查器(如截图所示)拖动到指定的函数。在图像中,您可以看到我的Sent Actions已连接到方法swipeTarget:

enter image description here

但是目前你有两个不完整的识别。

+0

优秀。非常感谢你NJones – JAM 2012-03-14 01:20:33

+2

没问题。乐于帮助。 – NJones 2012-03-14 01:24:06

1
UISwipeGestureRecognizer *swipe = [[UISwipGestureRecognizer alloc] 
     initWithTarget:gameView action:@selector(handleSwipeFrom:)]; 
    [gameView addGestureRecognizer:swipe]; 


- (IBAction)handleSwipeFrom:(UISwipeGestureRecognizer*)recognizer { 
    NSLog(@" .............. Swipe detected!! ..................."); 
} 

然后撤消你在IB所做的事情。如果你在代码中完成,然后做在IB过你只是重复工作,也许加倍刷卡的处理

11
-(void)addSwipeEvent:(UIView*)subView{ 

    UISwipeGestureRecognizer *recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(SwipeRecognizer:)]; 
    recognizer.numberOfTouchesRequired = 1; 
    recognizer.delegate = self; 
    [subView addGestureRecognizer:recognizer]; 
    [recognizer release]; 

    UISwipeGestureRecognizer *leftRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(SwipeRecognizer:)]; 
    leftRecognizer.direction=UISwipeGestureRecognizerDirectionLeft; 
    leftRecognizer.numberOfTouchesRequired = 1; 
    leftRecognizer.delegate = self; 
    [subView addGestureRecognizer:leftRecognizer]; 
    [leftRecognizer release]; 

    UISwipeGestureRecognizer *downRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(SwipeRecognizer:)]; 
    downRecognizer.direction=UISwipeGestureRecognizerDirectionDown; 
    downRecognizer.numberOfTouchesRequired = 1; 
    donwRecognizer.delegate = self; 
    [subView addGestureRecognizer:downRecognizer]; 
    [downRecognizer release]; 

    UISwipeGestureRecognizer *upRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(SwipeRecognizer:)]; 
    upRecognizer.direction=UISwipeGestureRecognizerDirectionUp; 
    upRecognizer.numberOfTouchesRequired = 1; 
    upRecognizer.delegate = self; 
    [subView addGestureRecognizer:upRecognizer]; 
    [upRecognizer release]; 
} 

- (void) SwipeRecognizer:(UISwipeGestureRecognizer *)sender { 
    if (sender.direction == UISwipeGestureRecognizerDirectionLeft){ 
     NSLog(@" *** SWIPE LEFT ***"); 

    } 
    if (sender.direction == UISwipeGestureRecognizerDirectionRight){ 
     NSLog(@" *** SWIPE RIGHT ***"); 

    } 
    if (sender.direction== UISwipeGestureRecognizerDirectionUp){ 
     NSLog(@" *** SWIPE UP ***"); 

    } 
    if (sender.direction == UISwipeGestureRecognizerDirectionDown){ 
     NSLog(@" *** SWIPE DOWN ***"); 

    } 
} 


- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { 
    if ([touch.view isKindOfClass:[UIView class]]) 
    { 
     return YES; 
    } 
    return NO; 
} 
+1

在.h文件中实现UIGestureRecognizerDelegate委托。 – Vibhooti 2012-03-14 06:30:31