我刚刚开始使用新的iPhone / iPad开发项目,我需要显示带有丰富样式文本的文档(可能带有嵌入式图像)。用户将触摸文档,拖动以突出显示单个单词或多行文本跨度。当文本突出显示时,将出现一个上下文菜单,让他们更改突出显示的颜色或添加边距注释(或结构化元数据的其他各个位)。
如果您熟悉向Word文档添加注释(或注释PDF),那么这就是同样的事情。但在我的情况下,典型用户将在应用程序中花费许多小时,向中央文档添加数千(在某些情况下,数万)小注释。所有这些元数据都将存储在本地,等待与远程Web服务同步。
我已经阅读了其他建议,开发人员建议创建UIWebView控件并将其传递给HTML字符串。但这似乎有点笨拙,尤其是我想要包含的所有上下文敏感性。
无论如何,我是iPhone开发和Objective-C的新手,虽然我有十年的软件开发经验,在许多不同的平台上使用各种语言,所以我并不担心我的手写脏从头开始的新功能。
但是,如果有人有建立类似组件的经验,我有兴趣听取启用这种丰富的文档标记和注释的策略。
答案 0 :(得分:2)
使用iPad,您可以利用Core Text。
不知道为iPhone推荐什么。除了渲染HTML或PDF之外,我没有注意到任何iPhone阅读器应用程序中的任何出色的文本处理。我怀疑你必须从头开始写东西。
答案 1 :(得分:2)
我正在研究您所描述的简化版本。为了便于实现,我将其限制为段落粒度,因此长按选择一个段落,然后弹出一个选项列表以应用于段落。
我在UIWebView中的javascript中执行此操作。这是我如何做文本编辑器的最后选择。我必须向后兼容(没有CoreText)并通过iTunes发布(没有私人WebKit)所以我留下了javascript。
你可以使用这个非常笨重的方法达到你想要的效果。 Javascript在元素级别最有效,因此您可能希望在具有唯一ID的范围中包装文档中的每个单词。
Javascript可以完全访问触摸事件,手势和DOM模型。它比从Cocoa端更好地控制UIWebView。您可以通过一些技巧获得与主机应用程序的双向通信通道。 PhoneGap有很好的实现。
如果你可以选择另一种方式,我会采取这种方式。如果你像我一样陷入困境,那么这是一个可行但令人不快的选择。
答案 2 :(得分:1)
如果您愿意使用iPhone OS 3.2或更高版本,您可能需要查看Omni Group latest release的open source framework。它包括一个基于Core Text的示例富文本编辑器。