Iphone 如何解决此触摸事件性能问题?

Iphone 如何解决此触摸事件性能问题?,iphone,cocoa-touch,Iphone,Cocoa Touch,我正在跟踪视图上的触摸序列。该视图位于其他3个视图的层次结构中,没有任何内容覆盖它 当触摸开始时,直到触摸移动,我得到0.2秒的延迟。以下所有触摸都有一个只有0.01秒的小延迟 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { lastTime = [NSDate timeIntervalSinceReferenceDate]; } - (void)touchesMoved:(NSSet *)touch

我正在跟踪视图上的触摸序列。该视图位于其他3个视图的层次结构中,没有任何内容覆盖它

当触摸开始时,直到触摸移动,我得到0.2秒的延迟。以下所有触摸都有一个只有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];
    }
}
从touchesStart:到一堆touchesMoved:开始的每个触摸序列都有一个如下所示的执行延迟:

0.266244
0.001605
0.025965
0.005230
0.011768
0.001601
0.010808
0.002451
正如你所看到的,第一个被严重延迟。我只能猜测,但是:iPhone操作系统会等一段时间看它是否会是一个触摸序列吗?或者换言之:它是否等待看触摸是否打算成为移动触摸

我尝试实现一种滚动技术只是为了练习(当然我可以使用UIScrollView,但我想学习)。当我开始滚动时,感觉很糟糕,因为前0.26秒什么都没发生,然后它快速跳到手指位置。那看起来很难看


你知道如何禁用这个等待机制,让触动立即发生吗?

试试在if语句之外写日志,我想你会得到同样的结果。我猜iPhone操作系统在UIScrollView上可以做到这一点,有“延迟内容接触”选项,但在普通的UIView/UIViewController上我看不到。这个问题可能也会导致这样的结果吗?有人有解决办法吗?

Aha,这个问题得到了一些关于这个问题的好建议: