3
我需要在用戶開始觸摸屏幕,移動手指然後結束觸摸時執行一些操作。觸摸開始正常工作,也可以移動,但觸摸結束時間在0.5-1秒之間。下面有一個代碼:使用UIGestureRecognizerStateEnded產生不必要的延遲
-(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
任何想法?
注意到這種問題只發生在觸摸板上使用3個手指進行拖放時發生。當它只是一個手指(另一種拖放方式)時,它可以正常工作。很奇怪。 –
您是否找到解決方案?也有它 – Ixx
它也適用,如果你做一個短暫的暫停移動,然後舉手指。然後你立即結束狀態。否則會有延遲,就像它正在處理最後的移動一樣 - 或者不知道。 – Ixx