2017-04-20 48 views
1

我有一个奇怪的问题。我有一个ScrollView和ContentOffset已被设置为它。 我在下面的代码中已经在其代表中做了一个条件。UIScrollview的ContentOffset问题

-(void)scrollViewDidScroll:(UIScrollView *)scrollView{ 

    if(scrollOffsetY > 90 && scrollOffsetY < 150) { 

    NSLog(@"ContentOffset===>%f",ContentOffset); 

    } 
} 

我写作的条件,只有当我滚动滚动视图慢慢进入它。如果我滚动更快。它没有进入我的循环。

我该如何解决这个问题?并在条件为真时获取确切的值?

+0

移动你的代码enddeclrating每帧 –

+0

scrollViewDidScroll只更新。如果快速滚动,contentOffset可以为每个帧跳转非常大的数字。所以它可以在一帧内从90以下跳到150以上,并且代码永远不会被击中。不知道你的目标是什么,没有办法建议一种方法来“解决”这个问题。 –

+0

Hi @ Anbu.Karthik,scrollViewDidEndDecelerating在滚动完成后仅委托调用,所以当我滚动快速。条件满足时,只有当滚动停止之间的内容的价值偏移在If条件我已经提到。所以这不帮助我。 –

回答

1

UIScrollView不会为每个滚动像素调用委托。相反,它会在每帧图像上显示它。当您快速滚动时,滚动视图可能会跳过您想要检查的区域。如果您需要捕捉的那一刻时,指定区域,如果在屏幕上,你可以添加一个变量来存储先前偏移,并添加这样的条件:

if (previousScrollOffsetY > 150 && scrollOffsetY < 90) || (previousScrollOffsetY < 90 && scrollOffsetY > 150) { 
    NSLog(@"Skipped area") 
} 
previousScrollOffsetY = scrollOffsetY; 
相关问题