2

我刚刚开始一个新的 iPhone/iPad 开发项目,我需要显示一个具有丰富样式文本的文档(可能带有嵌入的图像)。用户将触摸文档,拖动以突出显示单个单词或多行文本跨度。当文本被突出显示时,将出现一个上下文菜单,让他们更改突出显示的颜色或添加边注(或其他各种结构化元数据)。

如果您熟悉向 Word 文档添加注释(或注释 PDF),那么这就是同一类事情。但在我的例子中,典型的用户会在应用程序中花费很多时间,在中心文档中添加数千个(在某些情况下,数万个)小注释。所有这些元数据位都将存储在本地,等待与远程 Web 服务同步。

我已阅读其他建议,其中开发人员建议创建 UIWebView 控件并将其传递给 HTML 字符串。但这似乎有点笨拙,尤其是在我想要包含的所有上下文敏感性的情况下。

无论如何,我是 iPhone 开发和 Objective-C 的新手,虽然我有十年的软件开发经验,在许多不同的平台上使用各种语言,所以我不担心我的手会弄脏从刮。

但是,如果有人有构建类似组件的经验,我很想听听启用这种丰富的文档标记和注释的策略。

4

3 回答 3

2

我正在研究您所描述的简化版本。为了便于实施,我将其限制为段落粒度,因此长按选择一个段落,然后弹出一个选项列表以应用于该段落。

我在 UIWebView 中的 javascript 中完成了这一切。这是我最后一次选择如何做一个文本编辑器。我必须向后兼容(没有 CoreText)并通过 iTunes 发布(没有私有 WebKit),所以我只剩下 javascript。

使用这种非常笨重的方法,您可能可以实现您想要的。Javascript 在元素级别上效果最好,因此您可能希望将文档中的每个单词包装在具有唯一 ID 的跨度中。

Javascript 可以完全访问触摸事件、手势和 DOM 模型。它对 UIWebView 的控制比您从 Cocoa 方面获得的更好。您可以通过一些技巧获得与主机应用程序的双向通信通道。PhoneGap 有一个很好的实现。

如果您可以选择以其他方式进行操作,我会选择该选项。如果您像我一样被卡住,那么这是一个可行的选择,尽管不愉快。

于 2010-05-18T15:53:31.580 回答
2

使用 iPad,您可以利用Core Text

不知道对 iPhone 有什么建议。除了呈现 HTML 或 PDF 之外,我还没有注意到任何 iPhone 阅读器应用程序中有任何出色的文本处理。我怀疑你必须从头开始写一些东西。

于 2010-05-18T15:15:59.020 回答
1

如果您愿意使用 iPhone OS 3.2 或更高版本,您可能想看看 Omni Group 的最新版本开源框架。它包括一个基于 Core Text 的示例富文本编辑器。

于 2010-05-18T15:18:26.360 回答