如何在iOS中识别单个的点击和双击视图



在我的应用程序中,想要识别单击和双击视图。我的实际问题是,当双击视图,时间单点击也发生。点击一下效果很好,所以如何识别单个点击和双击视图?

我的代码是:
- (void)viewDidLoad
{
   [super viewDidLoad];
   [self fullscreenGallery];
   [self video_image_Gallery];
}
-(void)video_image_Gallery
{
   UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTap:)];
   doubleTap.numberOfTapsRequired = 2;
   doubleTap.delegate = self;
   [image_scroll addGestureRecognizer:doubleTap];
}
- (void)handleDoubleTap:(UIGestureRecognizer *)gestureRecognizer 
{
   [self performSelector:@selector(fullscreenGallery) withObject:nil afterDelay:3];
   UIScrollView * imageScroll = (UIScrollView *)gestureRecognizer.view;
   self.header_view.hidden=NO;
   float newScale = [imageScroll zoomScale] + ZOOM_STEP;
   if (newScale > imageScroll.maximumZoomScale)
   {
      newScale = imageScroll.minimumZoomScale;
      CGRect zoomRect = [self zoomRectForScale:newScale withCenter:[gestureRecognizer locationInView:gestureRecognizer.view]];
      [imageScroll zoomToRect:zoomRect animated:YES];
   }
   else
   {
      self.header_view.hidden=YES;
      newScale = imageScroll.maximumZoomScale;
      CGRect zoomRect = [self zoomRectForScale:newScale withCenter:[gestureRecognizer locationInView:gestureRecognizer.view]];
      [imageScroll zoomToRect:zoomRect animated:YES];
   }
}

在您的应用程序中使用下面的代码

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:    self action:@selector(handleSingleTap)];
singleTap.numberOfTapsRequired = 1;
singleTap.delaysTouchesEnded = YES;
UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:   self action:@selector(handleDoubleTap)];
doubleTap.numberOfTapsRequired = 2;

[singleTap requireGestureRecognizerToFail:doubleTap];
[self.view addGestureRecognizer:singleTap];
[self.view addGestureRecognizer:doubleTap];

-(void)handleSingleTap
{
  NSLog(@"The single tap happened");
}
-(void)handleDoubleTap
{
  NSLog(@"The double tap happened");
}

上面的代码工作得很好。我尝试上面的编码。它单独工作。查一下。

为两个手势添加相同的目标,

UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTap:)];
doubleTap.numberOfTapsRequired = 2;
doubleTap.delegate = self;
[self.view addGestureRecognizer:doubleTap];
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTap:)];
singleTap.numberOfTapsRequired = 1;
singleTap.delegate = self;
[self.view addGestureRecognizer:singleTap];

延迟第一个tap处理程序

- (void) handleDoubleTap:(UITapGestureRecognizer*)sender {
    [self performSelector:@selector(handleSingleTap:) withObject:nil afterDelay:0.5];
    if(sender.numberOfTapsRequired == 2) {
        NSLog(@"Double tap:");
      [NSObject cancelPreviousPerformRequestsWithTarget:self];
    }
}
- (void) handleSingleTap:(UITapGestureRecognizer*)sender {
    NSLog(@"Single tap:");
}

最新更新