gpt4 book ai didi

delay - UIGestureRecognizerStateEnded 出现不必要的延迟

转载 作者:行者123 更新时间:2023-12-01 07:28:48 29 4
gpt4 key购买 nike

我需要在用户开始触摸屏幕、移动手指然后结束触摸时执行一些操作。触摸开始工作正常,也可以移动,但触摸结束运行有 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");
}
}

在日志中(最后两行)我看到了这个:

2012-10-15 11:29:03.609 App[6169:c07] moved
2012-10-15 11:29:04.267 App[6169:c07] ended

有什么想法吗?

最佳答案

看看 GestureRecognizer 的 delaysTouchesEnded属性(property)。来自 Apple 的文档:

当此属性的值为 YES(默认值)并且接收器正在分析触摸事件时,窗口会暂停将 UITouchPhaseEnded 阶段的触摸对象传递到附加 View 。如果手势识别器随后识别出它的手势,这些触摸对象将被取消(通过 touchesCancelled:withEvent: 消息)。如果手势识别器无法识别其手势,窗口将在调用 View 的 touchesEnded:withEvent: 方法时传递这些对象。将此属性设置为 NO 可在手势识别器分析相同触摸时将 UITouchPhaseEnded 中的触摸对象传送到 View 。

关于delay - UIGestureRecognizerStateEnded 出现不必要的延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12891827/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com