- (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:不工作?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)