【发布时间】:2016-08-20 11:42:04
【问题描述】:
我正在为 iPad Pro 构建一个应用程序,它有一个 UITableView 显示一个包含项目的目录。有许多目录,每个目录都有 1000 件商品。
目标
我想了解如何(最好)使用 Pencil 在 UITableView 中注释内容,以便用户可以用手指滚动。此外,用户绘制的内容会保存在数据模型中。
让我解释一下我的尝试。
单个 UIView
我在自定义 UITableView 之上放置了一个 UIView,该 UITableView 覆盖 touch.type == UITouchType.Stylus 上的 touchesBegan/Moved/Ended/Canceled 函数和过滤器,以了解何时是手指,何时是铅笔。这行得通,但这不是一个好的解决方案,因为图像会很大,甚至无法放置一些包含太多项目的目录。
每行一个 UIView
适用于大型目录,但出现了无法跨行绘制的问题,这必须是可能的。我还没有找到一种方法来保持手势跨越不同的视图。这是可能的还是有某种解决方法?
修复了屏幕上的 UIView
滚动时跟随,容易在任何东西上绘制,但不清楚且难以将绘制的东西固定到表格坐标以及持久化。感觉不太对劲,因为可能要跟随屏幕大小的画布似乎过于复杂,并且绘制的任何内容都转换为 UIImageView 以用于它跨越的行并持续存在......这就是我现在所在的地方,我可以展示一些代码,如果这种方法有意义的话。
有没有更好的方法来解决这个问题,因为在我看来这应该是现在使用 Pencil 非常自然的需要,即在表格视图中进行注释和持久化。
有没有人做过这样的事情或者我忽略了什么?也许是某种稀疏的 UIImageView,这样我就可以在一张巨大的桌子上放一个?
我正在寻找一个好的解决方案和示例代码,具体取决于解决方案的参与程度。
谢谢!
更新
为了澄清,表中的项目以固定方式排序,因此可以使用它来将绘制/注释的内容作为部分内容持久保存。
通常,绘图/注释可以保存为 1 到 N 个图像。在许多情况下,一个图像太大了,因为项目数以千计,N 个图像意味着存在一个手势被中断的边界,并且由于绘图不连续,因此不适合可用性(除非这可以解决哪个会很棒)。
数据模型可以是目录 [ -> pages ] -> items 但我不希望有一个页面概念,因为它(更长的原因很短)使每页的项目更小,而重点是最大化项目以更容易注释。
【问题讨论】:
-
注释是否连接到表格视图中的单个项目?如果表格视图中项目的顺序发生变化,注释是否应该遵循新的顺序?
-
是的,非常好的问题。这当然都与这个具体案例有关,顺序是固定的,不会改变。注释不一定要连接到特定的行/项目,但如果它有助于持久化(小图像还是大图像?)
-
当然,注释与项目/行有关。 IE。您为该特定行/项目标记某些内容或评论某些内容。此外,您可能想要标记/注释一系列项目,因此绘图/注释应该跨越多行/项目。
标签: ios uitableview ipad