2012-05-21 3 views
0

Heres кода, где им Складывая жест распознавателиUIGesturerecognizer не вызывая shouldRecognizeSimultaneouslyWithGestureRecognizer

UIImage *img = [UIImage imageWithContentsOfFile:media.thumbnailPath]; 
    UIImageView *imageView = [[UIImageView alloc] init]; 
    imageView.image = img; 
    imageView.contentMode = UIViewContentModeScaleToFill; 
    imageView.backgroundColor =[UIColor blackColor]; 

    //Add tap guesture 
    UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)]; 
    UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTap:)]; 

    [singleTap setNumberOfTapsRequired:1]; 
    [singleTap setDelegate:self]; 

    [doubleTap setNumberOfTapsRequired:2]; 
    [doubleTap setDelegate:self]; 

    [singleTap requireGestureRecognizerToFail:doubleTap]; 

    [imageView addGestureRecognizer:singleTap]; 
    [imageView addGestureRecognizer:doubleTap]; 
    [singleTap release]; 
    [doubleTap release]; 

и я реализовал

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer 
{ 
    NSLog(@"Gesturing"); 
    return YES; 
} 

но метод делегата не вызывается, когда дело с SingleTap жестом, но это работы по двойному жесту

ответ

3

Отъезд Simultaneous gesture recognizers in Iphone SDK

В большинстве случаев вам не нужно:

setup a delegate 
permit simultaneous gesture recognition (unless you want simultaneous swipes; not likely) 

Установка Жест распознования

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] 
            initWithTarget:self 
            action:@selector(handleSingleTapOnMainImageView:)]; 

[imageView addGestureRecognizer:singleTap]; 
[singleTap release]; 

UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] 
            initWithTarget:self 
            action:@selector(handleDoubleTapOnMainImageView:)]; 
[doubleTap setNumberOfTapsRequired:2]; 
[singleTap requireGestureRecognizerToFail:doubleTap]; 
[imageView addGestureRecognizer:doubleTap]; 
[doubleTap release]; 

реализация метода

-(void)handleSingleTapOnMainImageView:(UIGestureRecognizer*)gestureView 
{ 
NSLog(@"handleSingleTapOnMainImageView"); 
} 

-(void)handleDoubleTapOnMainImageView:(UIGestureRecognizer*)gestureView 
{ 
NSLog(@"handleDoubleTapOnMainImageView"); 
} 
-1

добавить imageView.userInteractionEnabled = YES; будет работа!

Смежные вопросы