UIScrollView 通知
Posted
技术标签:
【中文标题】UIScrollView 通知【英文标题】:UIScrollView notifications 【发布时间】:2010-04-10 10:45:00 【问题描述】:我正在编写一个与 Apple 的 Weather.app 非常相似的应用程序:底部有一个 UIPageControl,屏幕中间有一个 UIScrollView。
在我的代码中,我实现了- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
方法来确定用户何时确实移动到了新页面。如果他们移动到新页面,我会加载相邻页面的数据,以使进一步的页面切换更快。 (在 Apple 的一个示例中,使用了 - (void)scrollViewDidScroll:(UIScrollView *)sender
,但这会导致我的应用在加载新页面时很快挂起,因此不适合。)
该代码运行良好。
当用户单击 UIPageControl 时,我正在使用 scrollRectToVisible:
: 以编程方式在滚动视图内滚动。问题是scrollRectToVisible:
在滚动完成时不会向 UIScrollViewDelegate 发布通知 - 因此在使用 UIPageControl 时永远不会调用负责加载相邻页面的代码。
有什么方法可以让 UIScrollView 在被scrollRectToVisible:
方法调用时通知它的委托?还是我必须使用线程来防止我的应用冻结?
谢谢!
--Ry
【问题讨论】:
请从标题中删除[iPhone]
,因为您不会在问题标题中添加标签。
【参考方案1】:
-scrollViewDidEndScrollingAnimation:
怎么样?
如果不起作用,请尝试收听UITextSelectionDidScroll
通知。 (当然,它是无证的。)
另外,SDK 安全的方法是测量动画所用的时间,并在-scrollRectToVisible:
的调用点发送延迟通知。
【讨论】:
【参考方案2】:您可以添加此委托方法:
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView
滚动视图在 UIScrollView 和 setContentOffset:animated: 和 scrollRectToVisible:animated: 方法的实现结束时调用此方法,但仅限于请求动画时。
【讨论】:
以上是关于UIScrollView 通知的主要内容,如果未能解决你的问题,请参考以下文章