我希望缩短UIScrollView上的触摸延迟,但我不想使用setDelaysContentTouches:NO;我仍然希望稍有延迟,但我的用户抱怨它太长了。
有办法做到这一点吗?
答案 0 :(得分:3)
医生说
如果用户在计时器之前将手指拖得足够远 过了,滚动视图取消了子视图中的任何跟踪 执行滚动本身。子类可以覆盖 touchesShouldBegin:withEvent:inContentView:,pagingEnabled,和 touchesShouldCancelInContentView:方法(由 滚动视图)以影响滚动视图处理滚动手势的方式。
所以我认为没有简单的方法可以做到这一点。您可能必须在这些方法中重新实现整个计时器系统。
答案 1 :(得分: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;
}