如何在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秒。否仍然无法正常工作。。请给我另一个解决方案让我们一起来吧。我也试过这个。。但当双击的时候,同样的问题发生了,我的朋友斯特拉也来了:)