gpt4 book ai didi

ios - scrollViewDidScroll : when scroll programmatically?

转载 作者:行者123 更新时间:2023-11-28 18:10:30 26 4
gpt4 key购买 nike

我有这个委托(delegate),它打算在用户用手指滚动时执行:

-(void)scrollViewDidScroll:(UIScrollView *)scrollView

我有一行代码滚动到开头:

[scroller scrollRectToVisible:CGRectMake(0, 0,scroller.frame.size.width,scroller.frame.size.height) animated:YES];

当我执行这行代码以编程方式滚动时,第一个委托(delegate)也被调用。我想避免这种情况发生。

我试图将委托(delegate)设置为 nil,但它仍然执行委托(delegate):

scroller.delegate=nil;//to not excute scrolldidscroll
[scroller scrollRectToVisible:CGRectMake(0, 0,scroller.frame.size.width,scroller.frame.size.height) animated:YES];
scroller.delegate=self;

编辑:

我读过这个很棒的答案:Setting contentOffset programmatically triggers scrollViewDidScroll但他的解决方案(第一个)似乎没有动画,而我需要那个动画。

最佳答案

可能有更好的解决方案,但这应该可行:

在你的 .h 中声明一个 bool 值

@property(nonatomic,assign) BOOL scrollingProgrammatically;

在你的 .m 中:

self.scrollingProgrammatically = YES;
[scroller scrollRectToVisible:CGRectMake(0, 0,scroller.frame.size.width,scroller.frame.size.height) animated:YES];

...

-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
if(!self.scrollingProgrammatically){
...
}
}

-(void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView{
self.scrollingProgrammatically = NO;
}

关于ios - scrollViewDidScroll : when scroll programmatically?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23829987/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com