2015-09-08 1 views
3

В моем приложении вы хотите идентифицировать один клик и дважды щелкнуть мышью на View. Моя фактическая проблема заключается в том, что двойной щелчок мышью на просмотр в тот же раз, когда один клик тоже произошел. И один клик работает отлично .. Так Как идентифицировать отдельные отдельные клики и двойной клик по представлению?Как определить индивидуальный просмотр одного клика и двойного щелчка в 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]; 
    } 
} 
+0

Я думаю, что это невозможно в жесте, если вы хотите знать, что использование метода touch end –

+0

Вы добавляете их к тому же самому виду? В вашем коде вы добавляете к 2 различным представлениям (image_scroll и self.view) ... – Templar

+0

Я добавил 2 разных вида viewcroll и sub view в mainview –

ответ

2

Использование ниже кода в приложении

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

Над кодом работает отлично. Я пробовал работать над кодированием.it работает индивидуально. Проверьте его.

+0

Я тоже пробовал этот. .. но при двойном щелчке в тот же момент произошла ошибка –

+0

Я обновил свой ответ, пожалуйста, проверьте его и скажите мне. – user3182143

+0

Добро пожаловать МОИ ДРУЗЬЯ Стела :) – user3182143

0

Добавить ту же цель для обоих жестов,

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

задержка первого крана обработчик

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

no i can can chnage [self.view addGestureRecognizer: singleTap]; –

+0

Вы можете изменить свое мнение, приятель, это пример. –

+0

Да, но он не работает должным образом. –