Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在iOS中识别单个单击和双击视图?_Ios_Objective C_Uitapgesturerecognizer - Fatal编程技术网

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

如何在iOS中识别单个单击和双击视图?,ios,objective-c,uitapgesturerecognizer,Ios,Objective C,Uitapgesturerecognizer,在我的应用程序中,希望识别单击视图和双击视图。 我的实际问题是,当双击视图时,也发生了单击。一次点击就可以很好地工作,所以 如何识别单个单击和双击视图 我的代码是: - (void)viewDidLoad { [super viewDidLoad]; [self fullscreenGallery]; [self video_image_Gallery]; } -(void)video_image_Gallery { UITapGestureRecognizer *dou

在我的应用程序中,希望识别单击视图和双击视图。 我的实际问题是,当双击视图时,也发生了单击。一次点击就可以很好地工作,所以 如何识别单个单击和双击视图

我的代码是:

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

在应用程序中使用以下代码

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

上面的代码工作得很好。我尝试了上面的代码。它可以单独工作。请检查。

我认为在手势中是不可能的,如果您想知道使用触摸端方法,您是否将这些添加到完全相同的视图中?在您的代码中,您正在添加两个不同的视图(image_scroll和self.view)…我在MainView中添加了两个不同的视图imagescroll和sub-view单击与双击,您试图实现什么?使用长按手势双击会更容易吗?这样,您可以保持单击。在我的应用程序中,您可以查看多媒体资料。。当单击发生时,时间页眉和页脚将像我们的手机图库一样隐藏。。当双击那个时间图像放大缩小。。所以我想解决这个问题,不,我不能改变[self.view addgesturecognizer:singleTap];你可以在那里改变你的观点,伙计,这是一个例子。我在这里发布之前已经测试过了。。如果你的攻丝很慢,那么试着增加目标延迟。。。在此代码中为0.5秒。否仍然无法正常工作。。请给我另一个解决方案让我们一起来吧。我也试过这个。。但当双击的时候,同样的问题发生了,我的朋友斯特拉也来了:)