2012-05-21 25 views
0

繼承人那裏IM添加手勢識別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;會的工作!