Ios UIScrollview中的ContentOffset问题
我有一个奇怪的问题。我有一个ScrollView,ContentOffset已经设置好了。 我用下面的代码在它的委托中做了一个条件Ios UIScrollview中的ContentOffset问题,ios,objective-c,if-statement,uiscrollview,contentoffset,Ios,Objective C,If Statement,Uiscrollview,Contentoffset,我有一个奇怪的问题。我有一个ScrollView,ContentOffset已经设置好了。 我用下面的代码在它的委托中做了一个条件 -(void)scrollViewDidScroll:(UIScrollView *)scrollView{ if(scrollOffsetY > 90 && scrollOffsetY < 150) { NSLog(@"ContentOffset===>%f",ContentOffset); } }
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
if(scrollOffsetY > 90 && scrollOffsetY < 150) {
NSLog(@"ContentOffset===>%f",ContentOffset);
}
}
-(无效)scrollViewDidScroll:(UIScrollView*)scrollView{
如果(scrollOffsetY>90&&scrollOffsetY<150){
NSLog(@“ContentOffset===>%f”,ContentOffset);
}
}
我所写的条件是有效的,只有当我慢慢滚动滚动滚动视图时才会进入这种状态。如果我滚动得更快。它没有进入我的循环
我该如何解决这个问题?当条件为真时,得到确切的值 UIScrollView不会为每个滚动像素调用委托。相反,它会在显示每个帧快照时调用它。快速滚动时,滚动视图可能会跳过要检查的区域。如果需要捕捉指定区域在屏幕上移动的时刻,可以添加一个变量来存储以前的偏移量,并添加如下条件:
if (previousScrollOffsetY > 150 && scrollOffsetY < 90) || (previousScrollOffsetY < 90 && scrollOffsetY > 150) {
NSLog(@"Skipped area")
}
previousScrollOffsetY = scrollOffsetY;
if(previousScrollOffsetY>150&&scrollOffsetY<90)| |(previousScrollOffsetY<90&&scrollOffsetY>150){
NSLog(@“跳过区域”)
}
previousScrollOffsetY=scrollOffsetY;
将代码移动到EndDeclratingScrollViewDid仅滚动每个帧的更新。如果快速滚动,则contentOffset会在每一帧中跳转非常大的数字。因此,它可以在一帧内从低于90跳到高于150,代码永远不会被命中。在不知道您的目标是什么的情况下,无法建议“修复”此问题的方法。Hi@Anbu.Karthik,ScrollViewDiEndDecreating代理仅在滚动完成后调用,因此当我快速滚动时。仅当滚动在我提到的If条件中的Content offset的值之间停止时,该条件才满足。所以这对我没有帮助。嗨,琼罗斯,是的,你说得对。但我怎样才能达到这个条件呢?有没有其他方法可以达到这个目的?你的目标是什么?