背景需求:页面如果已经在最底部,收到新消息就自动插入消息并滚动到最底部;如果不在最底部,则展示新消息提醒,点击新消息滚动到最低不。如此重复。
具体实现是在UIScrollView的scrollViewDidEndDragging、scrollViewDidEndDecelerating两个回调判断当前页面是否在最底部。但是竟然有bug,当时用的滚动是scrollRectToVisible:animated:。
在很久以前,我所在团队是hook UIScrollView的scrollViewDidEndDragging、scrollViewDidEndDecelerating两个回调来进行自动化打点。实在不明白。
后来我在网上找到答案。见UIScrollView的滚动、停止
当setContentOffset:animated:、scrollRectToVisible:animated:当有动画时,走的回调是scrollViewDidEndScrollingAnimation。如果没有动画,则没有回调。
类似的还有UITableView的scrollToRowAtIndexPath:atScrollPosition:animated:、selectRowAtIndexPath:animated:scrollPosition:。
简单而又复杂,这么“细致”的东西可能会被归为经验吧。但是做为一个iOS开发,怎么才能把这些吃透呢?怎么系统完整的学习iOS?