4

我正在尝试创建可以处理具有不同页面高度的多个页面的自定义垂直 UIScrollView。

假设:

  • 页面高度等于或大于屏幕高度
  • 如果页面比屏幕高度高,它会像往常一样滚动 UIScrollView - 在顶部和底部弹跳
  • 如果用户最终滚动并且“分页符”在屏幕中间
    • 如果没有速度 - 页面捕捉到最近
    • 如果有速度 - 页面在滑动方向上变为一

我尝试了很多方法来实现这一点,但我偶然发现了许多 UIScrollView 怪癖,这让我很难做到。

问题:

  • UIPanGestureRecognizer 获取速度的方法不可靠(velocityInView :)
  • scrollViewWillEndDragging:withVelocity:targetContentOffset: 方法让我头疼,因为它可以任意破坏我设置内容偏移的动画尝试
  • 我不知道如何在中间页面中实现反弹,恐怕我不得不重写整个滚动处理
  • 当我尝试在 UIScrollView 减速时覆盖设置内容偏移时,我得到的是
    • 我的内容偏移量已设置
    • 减速继续超出我设置的内容偏移量

奖金

我也尝试过将 UIScrollView 作为页面放在 UIScrollView 中,但这种方法也很让人头疼。例如,当我在内部滚动的底部时,然后我向下滚动一点,将手指放开并快速再次抓住并向上滚动,外部滚动接收到触摸,这弄乱了内部滚动呈现。

有人知道怎么做吗?任何提示都会有所帮助,因为我完全陷入困境......

4

1 回答 1

1

尝试这个。可能有帮助。基于 Circa 新闻应用程序。

https://www.cocoacontrols.com/controls/rscircapagecontrol

于 2013-10-14T18:01:17.927 回答