Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Aug 11th, 2012  |  syntax: None  |  size: 2.49 KB  |  hits: 8  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. How to respond only to a single-tap gesture while letting objects behind respond to double-taps?
  2. UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapAction:)];
  3. singleTap.numberOfTapsRequired = 1;
  4. singleTap.delegate = self;
  5. [self.hotspot addGestureRecognizer:singleTap];
  6. [singleTap release];
  7.        
  8. UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(zoomWebView:)];
  9. doubleTap.numberOfTapsRequired = 2;
  10. doubleTap.delegate = self;
  11. [self.hotspot addGestureRecognizer:doubleTap];
  12. [doubleTap release];
  13.  
  14. UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapAction:)];
  15. singleTap.numberOfTapsRequired = 1;
  16. [singleTap requireGestureRecognizerToFail:doubleTap];
  17. singleTap.delegate = self;
  18. [self.hotspot addGestureRecognizer:singleTap];
  19. [singleTap release];
  20.  
  21. - (void)zoomWebView:(UITapGestureRecognizer *)gesture {
  22.     NSLog(@"double tap");
  23. }
  24.        
  25. - (void)viewDidLoad {
  26.     UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doubleTapWebView:)];
  27.     doubleTap.numberOfTapsRequired = 2;
  28.     doubleTap.delegate = self;
  29.     [self.webViewParent addGestureRecognizer:doubleTap];
  30.     [doubleTap release];
  31.  
  32.     UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapWebView:)];
  33.     singleTap.numberOfTapsRequired = 1;
  34.     [singleTap requireGestureRecognizerToFail:doubleTap];
  35.     singleTap.delegate = self;
  36.     [self.webViewParent addGestureRecognizer:singleTap];
  37.     [singleTap release];
  38. }
  39.  
  40. - (void)doubleTapWebView:(UITapGestureRecognizer *)gesture {
  41.     NSLog(@"double-tap");
  42.     // nothing to do here
  43. }
  44.  
  45. - (void)singleTapWebView:(UITapGestureRecognizer *)gesture {
  46.     NSLog(@"single-tap");
  47.     CGPoint touchLocation = [gesture locationInView:self.webViewParent];
  48.     float x = touchLocation.x;
  49.     float y = touchLocation.y;
  50.     CGRect frame = self.webViewParent.frame;
  51.     if (y < frame.size.height * .33) {
  52.         NSLog(@"top");
  53.     } else if (y > frame.size.height * .67) {
  54.         NSLog(@"bottom");
  55.     } else if (x < frame.size.width * .33) {
  56.         NSLog(@"left");
  57.     } else if (x > frame.size.width * .67) {
  58.         NSLog(@"right");
  59.     } else {
  60.         NSLog(@"center");
  61.     }
  62. }
  63.  
  64. - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
  65.     return YES;
  66. }