4

我正在编写一个与 Apple 的 Weather.app 非常相似的应用程序:底部有一个 UIPageControl,屏幕中间有一个 UIScrollView。在我的代码中,我实现了- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView确定用户何时移动到新页面的方法。如果他们移动到新页面,我会加载相邻页面的数据,以使进一步的页面切换更快。(在 Apple 的一个示例中,- (void)scrollViewDidScroll:(UIScrollView *)sender使用了 ,但这会导致我的应用程序在加载新页面时很快挂起,因此不适合。)该代码运行良好。

我正在使用scrollRectToVisible:: 当用户单击 UIPageControl 时以编程方式在滚动视图内滚动。问题是scrollRectToVisible:当它完成滚动时不会向 UIScrollViewDelegate 发布通知 - 因此在使用 UIPageControl 时永远不会调用负责加载相邻页面的代码。

有没有办法让 UIScrollView 在被方法调用时通知它的委托scrollRectToVisible:?还是我必须使用线程来防止我的应用程序冻结?

谢谢!

-- 瑞

4

2 回答 2

4

怎么样-scrollViewDidEndScrollingAnimation:

如果它不起作用,请尝试收听UITextSelectionDidScroll通知。(当然,它是无证的。)

或者,SDK 安全的方法是测量动画所用的时间,并在-scrollRectToVisible:.

于 2010-04-10T12:08:58.217 回答
2

您可以改为添加此委托方法:

- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView

滚动视图在 UIScrollView 和 setContentOffset:animated: 和 scrollRectToVisible:animated: 方法的实现结束时调用此方法,但仅在请求动画时才调用。

于 2010-11-29T03:20:28.313 回答