ユーザーが画面に触れ始め、指を動かし、タッチを終了したときに、いくつかのアクションを実行する必要があります。タッチ開始は正常に動作し、移動も同様ですが、タッチ終了は 0.5 ~ 1 秒の遅延で実行されます。以下にコードがあります:
-(id) init {
if (self = [super init]) {
//Adding a listener for catching touch events and get call back to selector method
[self addGestureListener:@selector(gestureCallback:)];
CCScene *scene = [CCScene node];
[scene addChild: self];
[[CCDirector sharedDirector] runWithScene:scene];
}
return self;
}
- (UIPanGestureRecognizer *)addGestureListener:(SEL)selector {
UIPanGestureRecognizer *recognizer = [[[UIPanGestureRecognizer alloc] initWithTarget:self action:selector] autorelease];
[[[CCDirector sharedDirector] openGLView] addGestureRecognizer:recognizer];
return recognizer;
}
-(void) gestureCallback:(UIPanGestureRecognizer *) recognizer {
if (recognizer.state == UIGestureRecognizerStateBegan) {
NSLog(@"start");
} else if (recognizer.state == UIGestureRecognizerStateChanged) {
NSLog(@"moved");
} else if (recognizer.state == UIGestureRecognizerStateEnded) {
NSLog(@"ended");
}
}
ログ (最後の 2 行) には、次のように表示されます。
2012-10-15 11:29:03.609 App[6169:c07] moved
2012-10-15 11:29:04.267 App[6169:c07] ended
何か案は?