【发布时间】:2009-08-06 14:02:02
【问题描述】:
我正在跟踪视图上的触摸序列。该视图位于其他 3 个视图的层次结构中,并且没有任何内容覆盖它。
当触摸开始时,直到触摸移动,我得到 0.2 秒的延迟。所有后续的 touchesMoved 都只有 0.01 秒的小延迟。
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
lastTime = [NSDate timeIntervalSinceReferenceDate];
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
if ([touch view] == self.wheelView) {
CGFloat timeDiff = [NSDate timeIntervalSinceReferenceDate] - lastTime;
NSLog(@"%f", timeDiff);
lastTime = [NSDate timeIntervalSinceReferenceDate];
}
}
从 touchesBegan: 开始直到一堆 touchesMoved: 的每个触摸序列都有如下所示的执行延迟:
0.266244
0.001605
0.025965
0.005230
0.011768
0.001601
0.010808
0.002451
如您所见,第一个被严重延迟。我只能猜测,但是:iPhone OS 会等待一段时间,看看它是否会是一个触摸序列?或者换句话说:它是否会等着看触摸是否是一种移动的触摸?
我正在尝试实现一种滚动技术,只是为了练习(当然我可以使用 UIScrollView,但我想学习)。当我开始滚动时感觉很糟糕,因为前 0.26 秒什么也没发生,然后它快速跳到手指位置。看起来很难看。
知道如何禁用此等待机制以使 touchesMoved 立即发生吗?
【问题讨论】:
标签: iphone cocoa-touch