Ios 滚动视图更新

Ios 滚动视图更新,ios,uiscrollview,scrollview,Ios,Uiscrollview,Scrollview,我使用的方法是: - (void)scrollViewDidScroll:(UIScrollView *)scrollView 我会更新我的滚动视图偏移量。问题是我的滚动视图经常更新为。有没有办法缩短更新间隔?您必须按照自己的方式过滤结果。我在webView中也这样做,将动画频率从60赫兹更改为30赫兹。在我的示例中,我们每0.03秒使用一次scrollviewDidScroll结果。可以修改为您想要的任何数量 - (void)scrollViewDidScroll:(UIScrollV

我使用的方法是:

  - (void)scrollViewDidScroll:(UIScrollView *)scrollView 

我会更新我的滚动视图偏移量。问题是我的滚动视图经常更新为。有没有办法缩短更新间隔?

您必须按照自己的方式过滤结果。我在webView中也这样做,将动画频率从60赫兹更改为30赫兹。在我的示例中,我们每0.03秒使用一次scrollviewDidScroll结果。可以修改为您想要的任何数量

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
{
    static NSDate *date;
    if(!date)
        date = [NSDate date];

    //Check if we have gone long enough since the last desired update
    if([[NSDate date] timeIntervalSinceDate:date] > .03)
    {
        //Enough time has passed, do your updates here
        date = [NSDate date];
    }
}

以下是使用计时器实现此目的的草稿:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    if (!_delayTimer) {
        _delayTimer = [NSTimer scheduledTimerWithTimeInterval:.2
                               target:self selector:@selector(delayed)
                               userInfo:nil repeats:NO];
    }
}

- (void)delayed {
    _delayTimer = nil;
    [self doSomething:_scrollView.contentOffset];
}

你想用它实现什么?当scroll view没有ScrollNo时,您每次都可以得到它,这是完全正常的,但您可以自己调整它。保留上次使用的值的时间,并在获得新值时比较实际时间…使用
NSTimer
累积消息,有很多这样做的示例。这是一个坏主意,您将错过一些事件,并且不能保证控制器状态为上次滚动值。i、 e.如果视图在0.03秒内滚动,则会丢失数据。即使.03不是那么多,根据他想做什么,它也可以matter@VincentG这是真的。但他说他参加的活动太多了。这是一种减少他“看到”的事件数量的方法。这些事件仍然会发生,但他只会“看到”其中的一小部分(这是他所要求的)。这和你的答案差不多,但不太复杂。