Ios UIPageControl显示不正确的页面
我有一个包含多个表的UIScrollView,还有一个UIPageControl跟踪用户当前查看的页面。在我开始在tableview上向上滚动之前,它工作正常,此时UIPageControl调整并(错误地)说我们在第一页 这是我的密码:Ios UIPageControl显示不正确的页面,ios,uiscrollview,uipagecontrol,Ios,Uiscrollview,Uipagecontrol,我有一个包含多个表的UIScrollView,还有一个UIPageControl跟踪用户当前查看的页面。在我开始在tableview上向上滚动之前,它工作正常,此时UIPageControl调整并(错误地)说我们在第一页 这是我的密码: - (void)scrollViewDidScroll:(UIScrollView *)_scrollView { if (pageControlIsChangingPage) { return; } /* * We switch
- (void)scrollViewDidScroll:(UIScrollView *)_scrollView {
if (pageControlIsChangingPage) {
return;
}
/*
* We switch page at 50% across
*/
CGFloat pageWidth = _scrollView.frame.size.width;
int page = floor((_scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
pageControl.currentPage = page;
}
还有这个:
- (void)scrollViewDidEndDecelerating:(UIScrollView *)_scrollView {
pageControlIsChangingPage = NO;
}
不确定到底是什么导致了这一切。有什么想法吗?我被难住了:(当你滚动页面时,它是否正确滚动
if (pageControlIsChangingPage)
return;
当您不更改页面时(即,您改为滚动tableview),return
似乎不会执行。如此类推
CGFloat pageWidth = _scrollView.frame.size.width;
int page = floor((_scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
pageControl.currentPage = page;
此时将执行部分,
\u scrollView.contentOffset.x
将小于pageWidth/2
(甚至可以是0
),当您只是上/下滚动时,页面
结果是1
我认为问题在于,UITableView和UIScrollView都调用了相同的scrollview方法,因为它们都将委托设置为self。我在主scrollview中添加了一个标记,然后通过执行调整页面时选中标记,如下所示
if (_scrollView.tag == 100) {
CGFloat pageWidth = _scrollView.frame.size.width;
int page = floor((_scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
pageControl.currentPage = page;
}
最后pageControlIsChangingPage返回YES(是)。我不确定为什么会导致UIPageControl突然显示为我们在第一页上。我缺少什么?当您执行
return;
时,函数退出。是的,但我不确定为什么会导致此结果。是否要详细说明?是的,它可以完美地工作,只要执行return;
因为我不滚动表格视图。我真的不知道如何告诉uipagecontrol忽略这些。然而OK这里有点奇怪:如果我在没有uitableview的scrollview上向上滚动,页面控件不会错误地切换到第1页。因此,似乎uitableview在某种程度上干扰了我。我想可能是吧ps由于tableview是一个uiscrollview子类,共享同一个委托,因此调用了相同的方法,因此内容偏移量始终为0?@seandaziser将日志放入ScrollViewDiEndDeceling:
,检查是否每次滚动tableview时都执行它。您可以尝试注释掉ScrollViewDiEndDecel正在运行:
也可以。它确实正在执行。我认为tableview一定是以某种方式干扰了,但我不确定如何克服这个问题