ios - UIGesturerecognizer 不调用 shouldRecognizeSimultaneouslyWithGestureRecognizer

标签 ios cocoa-touch ipad uigesturerecognizer

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

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

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

最佳答案

查看 Simultaneous gesture recognizers in Iphone SDK

For most cases you don't need to:

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

关于ios - UIGesturerecognizer 不调用 shouldRecognizeSimultaneouslyWithGestureRecognizer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10687399/

相关文章:

iPhone 按钮图像

ios - 对持续触摸采取行动,而不是仅在触摸开始时采取行动 :

objective-c - 我如何知道我是否需要保留或转让属性(property)?

iphone - iOS 中的字典

iphone - 如何在不点击导航栏的情况下突出显示导航栏中的 BarButton?

ios - 在 segues Swift 之后出现在导航栏下的灰色栏

ios - 调用 SwiftUIApp.init() 时的实例?

ios - 剪切图像的抗锯齿

iphone - iPhone/iPad 中的指南针真实航向

ios - 每天从特定记录类型中删除所有 CloudKit 记录