4

我设置了我的应用程序,以便用户可以向左或向右滑动以在视图控制器之间导航,类似于 SnapChat。我使用UIScrollView启用了分页的方式实现了这一点。

我还想实现的 SnapChat 的一个功能是用户能够在 tableview 中选择一个单元格,开始滑动它,然后在某个点之后让单元格“锁定”,允许用户能够将整个视图拉过屏幕。如果您从未使用过 SnapChat,这可能有点难以描绘,所以我已经包含了我正在谈论的图像:

在此处输入图像描述 在此处输入图像描述

我应该如何使用 UIScrollView 实现此功能?

目前,我的 ScrollView 中的一个视图控制器有一个UITableView, 自定义UITableViewCells,其中包含手势识别器,允许它们在检测到滑动时滑过。一旦手势识别器检测到大于一定量的平移,单元格就停止相对于视图控制器的滑动,并且整个滚动视图开始滑动。

这大致达到了与 SnapChat 相同的效果,但它看起来并不那么好,而且非常有问题。例如,如果用户试图轻弹 tableview 单元格(就像人们在 SnapChat 中经常做的那样),s**t 会击中风扇。

SnapChat 对该功能的实现给人的印象是,在单元格滑动一定量之后,用户“保留了对滚动视图的控制”。这是一种非常优雅的用户体验,我不知道如何去复制它。

如果我应该提供任何其他有用的信息(例如我到目前为止的代码),请告诉我。

4

1 回答 1

2

我实现此功能的方式是通过子类化UITableViewCell并将UIPanGestureRecognizer添加到单元格,以及单元格本身顶部的“覆盖视图”,其中包含按钮、背景图像或单元格上需要的任何其他内容。

使用recognizer.translationInView(self),我能够准确地找出用户的触摸已经翻译了多少,然后相应地调整覆盖视图的原点,因此所有用户元素都会出现滑动。随着覆盖视图的翻译,它会显示一个我直接添加到单元格本身的视图。

在手势识别器翻译超过某个阈值后,我会手动调整 的内容偏移量UIScrollView,就像我对单元格所做的那样。

于 2016-07-19T07:00:31.163 回答