在UIScrollView中缩短触摸延迟?

9

我想缩短UIScrollView的触摸延迟时间,但是我不想使用setDelaysContentTouches:NO; 我仍然希望有一个轻微的延迟,但我的用户抱怨它太长了。

有没有办法做到这一点?

2个回答

3

文档中提到

如果用户在计时器结束前移动手指的距离足够远,则滚动视图会取消子视图的任何跟踪并执行自己的滚动。子类可以重写 touchesShouldBegin:withEvent:inContentView:、pagingEnabled 和 touchesShouldCancelInContentView: 方法(由滚动视图调用),以影响滚动视图如何处理滚动手势。

因此,我认为没有简单的方法来解决这个问题。你可能需要在这些方法中重新实现整个计时器系统。


0
我刚遇到了这个问题,以下是我的解决方案:
子类化UIScrolView
添加覆盖这些方法:
- (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;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接