0

这是我添加手势识别器的代码

    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;
}

但是在处理单击手势时不调用委托方法,但它适用于双击手势

4

2 回答 2

3

查看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");
}
于 2012-05-21T15:41:18.000 回答
-1

添加imageView.userInteractionEnabled = YES;将是工作!

于 2015-08-19T03:38:28.367 回答