我想缩短UIScrollView的触摸延迟时间,但是我不想使用setDelaysContentTouches:NO; 我仍然希望有一个轻微的延迟,但我的用户抱怨它太长了。
有没有办法做到这一点?
我想缩短UIScrollView的触摸延迟时间,但是我不想使用setDelaysContentTouches:NO; 我仍然希望有一个轻微的延迟,但我的用户抱怨它太长了。
有没有办法做到这一点?
文档中提到
如果用户在计时器结束前移动手指的距离足够远,则滚动视图会取消子视图的任何跟踪并执行自己的滚动。子类可以重写 touchesShouldBegin:withEvent:inContentView:、pagingEnabled 和 touchesShouldCancelInContentView: 方法(由滚动视图调用),以影响滚动视图如何处理滚动手势。
因此,我认为没有简单的方法来解决这个问题。你可能需要在这些方法中重新实现整个计时器系统。
- (BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContentView:(UIView *)view
{
self.lastTimestamp = [NSDate date];
return [super touchesShouldBegin:touches withEvent:event inContentView:view];
}
- (BOOL)touchesShouldCancelInContentView:(UIView *)view
{
NSDate *now = [NSDate date];
if (-[self.lastTimestamp timeIntervalSinceDate:now] < _delay)
return YES;
return NO;
}