Essentially the same idea of a timer, not sure if it is any easier or cleaner, but delayed performSelector: comes up as a suggestion in Apple's touch documentation as a way to have a double tap action cancel an initial single tap, or a triple tap cancel a possible initiated double tap action...
http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/EventHandling/EventHandling.html#//apple_ref/doc/uid/TP40007072-CH9-SW13
So you could, in your
- (void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
make a call like
[self performSelector :@selector(doMyOneSecondAction)
withObject :nil
afterDelay :1.0];
and in your methods
- (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
- (void)ccTouchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
call
[NSObject cancelPreviousPerformRequestsWithTarget:self
selector :@selector(doMyOneSecondAction)
object :nil];