- How to respond only to a single-tap gesture while letting objects behind respond to double-taps?
- UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapAction:)];
- singleTap.numberOfTapsRequired = 1;
- singleTap.delegate = self;
- [self.hotspot addGestureRecognizer:singleTap];
- [singleTap release];
- UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(zoomWebView:)];
- doubleTap.numberOfTapsRequired = 2;
- doubleTap.delegate = self;
- [self.hotspot addGestureRecognizer:doubleTap];
- [doubleTap release];
- UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapAction:)];
- singleTap.numberOfTapsRequired = 1;
- [singleTap requireGestureRecognizerToFail:doubleTap];
- singleTap.delegate = self;
- [self.hotspot addGestureRecognizer:singleTap];
- [singleTap release];
- - (void)zoomWebView:(UITapGestureRecognizer *)gesture {
- NSLog(@"double tap");
- }
- - (void)viewDidLoad {
- UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doubleTapWebView:)];
- doubleTap.numberOfTapsRequired = 2;
- doubleTap.delegate = self;
- [self.webViewParent addGestureRecognizer:doubleTap];
- [doubleTap release];
- UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapWebView:)];
- singleTap.numberOfTapsRequired = 1;
- [singleTap requireGestureRecognizerToFail:doubleTap];
- singleTap.delegate = self;
- [self.webViewParent addGestureRecognizer:singleTap];
- [singleTap release];
- }
- - (void)doubleTapWebView:(UITapGestureRecognizer *)gesture {
- NSLog(@"double-tap");
- // nothing to do here
- }
- - (void)singleTapWebView:(UITapGestureRecognizer *)gesture {
- NSLog(@"single-tap");
- CGPoint touchLocation = [gesture locationInView:self.webViewParent];
- float x = touchLocation.x;
- float y = touchLocation.y;
- CGRect frame = self.webViewParent.frame;
- if (y < frame.size.height * .33) {
- NSLog(@"top");
- } else if (y > frame.size.height * .67) {
- NSLog(@"bottom");
- } else if (x < frame.size.width * .33) {
- NSLog(@"left");
- } else if (x > frame.size.width * .67) {
- NSLog(@"right");
- } else {
- NSLog(@"center");
- }
- }
- - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
- return YES;
- }