I know this is a little old question, but here is the solution if someone needs it. In order to handle single and double taps in the same view, the write once recognizer must wait for the double tap recognizer to fail. Something like that:
UITapGestureRecognizer* doubleTapRecon = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTap)]; [doubleTapRecon setNumberOfTapsRequired:2]; [doubleTapRecon setDelegate:self]; [self.view addGestureRecognizer:doubleTapRecon]; UITapGestureRecognizer* singleTapRecon = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap)]; [singleTapRecon setNumberOfTapsRequired:1]; [singleTapRecon requireGestureRecognizerToFail:doubleTapRecon]; [singleTapRecon setDelegate:self]; [self.view addGestureRecognizer:singleTapRecon];
Please note that if you are not using ARC, you need to take care of memory management.
source share