ios – UIScrollView委托方法scrollViewWillEndDragging:不工作?

ios – UIScrollView委托方法scrollViewWillEndDragging:不工作?,第1张

概述我正在尝试使用scrollViewWillEndDragging:方法来滚动我自己的分页UICollectionView,其中任意一侧的预览类似于App Store应用程序.但是,使用滚动视图下方的代码只会滚动到所需的矩形,如果我停止拖动没有惯性(即只是抬起我的手指).如果我用任何惯性量轻d,方法仍会被调用但滚动视图不会滚动所需的矩形,它只是继续滚动? - (void)scrollViewWill 我正在尝试使用scrollVIEwWillEndDragging:方法来滚动我自己的分页UICollectionVIEw,其中任意一侧的预览类似于App Store应用程序.但是,使用滚动视图下方的代码只会滚动到所需的矩形,如果我停止拖动没有惯性(即只是抬起我的手指).如果我用任何惯性量轻d,方法仍会被调用但滚动视图不会滚动所需的矩形,它只是继续滚动?

- (voID)scrollVIEwWillEndDragging:(UIScrollVIEw *)scrollVIEw                     withVeLocity:(CGPoint)veLocity              targetContentOffset:(inout CGPoint *)targetContentOffset{    int itemWIDth = 280;    MyCollectionVIEw *collectionVIEw = (MyIndexedCollectionVIEw *) scrollVIEw;    int totalPages = [self.colorArray[collectionVIEw.index] count];    int currentPage;    int nextPage;    if (lastContentOffset < (int)scrollVIEw.contentOffset.x)    {        // moved right        NSLog(@"scrolling right");        double currentPageOffset = ceil((scrollVIEw.contentSize.wIDth -                                                  scrollVIEw.contentOffset.x) / itemWIDth);        currentPage = totalPages - currentPageOffset;        nextPage = currentPage >= totalPages ? totalPages : currentPage + 1;    }    else if (lastContentOffset > (int)scrollVIEw.contentOffset.x)    {        // moved left        NSLog(@"scrolling left");        double currentPageOffset = floor((scrollVIEw.contentSize.wIDth -                                               scrollVIEw.contentOffset.x) / itemWIDth);        currentPage = totalPages - currentPageOffset;        nextPage = currentPage <= 0 ? 0 : currentPage - 1;    }    int xOffset = (nextPage * itemWIDth);    int nextOffsetPage = (totalPages - ((scrollVIEw.contentSize.wIDth - xOffset) /                                                                       itemWIDth)) + 1;    [scrollVIEw scrollRectToVisible:CGRectMake(xOffset,collectionVIEw.bounds.size.wIDth,collectionVIEw.bounds.size.height)                                           animated:YES];}

在放弃这个方法后,我尝试使用scrollVIEwWillBeginDecelerating:方法,而完全相同的代码完美地工作?我之所以要使用scrollVIEwWillEndDragging:方法,原因有两个:

>我想根据滚动的速度调整它跳转到的项目
>如果在没有任何惯性的情况下抬起手指停止拖动,则不会调用scrollVIEwWillBeginDecelerating:方法.

任何想法,我误解了这回调是做什么的吗?

解决方法 DOH !!原来我应该一直使用targetContentOffset来设置我想要滚动到的偏移而不是scrollToRectToVisible:ala:

*targetContentOffset = CGPointMake(myTargetoffset,targetContentOffset->y);

RTFM 总结

以上是内存溢出为你收集整理的ios – UIScrollView委托方法scrollViewWillEndDragging:不工作?全部内容,希望文章能够帮你解决ios – UIScrollView委托方法scrollViewWillEndDragging:不工作?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1021018.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存