我正在跟踪视图上的触摸序列。该视图采用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立即发生吗?
答案 0 :(得分:0)
在if语句之外尝试NSLog-ging,我想你会得到相同的结果。我的猜测是iPhone OS会这样做
答案 1 :(得分:0)
在UIScrollView中,有“延迟内容触摸”选项,但我没有在正常的UIView / UIViewController上看到它们。问题可能也会导致这个问题吗?有人有解决方法吗?