2010-05-18 27 views
2

我剛開始使用新的iPhone/iPad開發項目,並且需要顯示帶豐富樣式文本(可能含有嵌入圖像)的文檔。用戶將觸摸文檔,拖動以突出顯示單詞或多行文本跨度。突出顯示文本時,會出現一個上下文菜單,讓它們更改突出顯示的顏色或添加邊距註釋(或其他各種結構化元數據位)。如何爲iPhone實現富文檔編輯器

如果您熟悉將註釋添加到Word文檔(或註釋PDF),那麼這與此類似。但就我而言,典型的用戶將在應用程序中花費許多小時,爲中央文檔添加數千個(有時甚至是數萬個)小注釋。所有這些元數據位都將存儲在本地,等待與遠程Web服務同步。

我讀過其他的建議,開發人員建議創建一個UIWebView控件並將其傳遞給一個HTML字符串。但是這看起來很笨重,尤其是在我想包含所有的上下文敏感性的情況下。

總之,儘管我有十年的軟件開發經驗,在很多不同的平臺上使用各種語言,但我對iPhone開發和Objective-C是全新的,所以我並不擔心讓我的手髒從頭開始編寫新的功能。

但是,如果任何人有構建類似組件的經驗,我有興趣聽到使用這種豐富的文檔標記和註釋的策略。

回答

2

有了iPad,您可以利用Core Text

不知道建議什麼爲iPhone。除了呈現HTML或PDF之外,我還沒有注意到任何iPhone閱讀器應用程序中的優秀文本處理。我懷疑你必須從頭開始寫點東西。

1

如果您願意使用iPhone OS 3.2或更高版本,則可能需要查看Omni Group的latest releaseopen source framework。它包含一個基於Core Text的富文本編輯器樣例。

2

我正在研究你所描述的簡化版本。爲了便於實現,我將其限制爲段落粒度,因此長按選擇一個段落,然後彈出一個選項列表以應用於段落。

我這樣做是在UIWebView中的所有JavaScript。這是我如何做文本編輯器的最後選擇。我不得不向後兼容(沒有CoreText)並通過iTunes發佈(沒有私人的WebKit),所以我只剩下javascript了。

你可以用這種非常笨重的方法實現你想要的。 Javascript在元素級別上效果最好,因此您可能希望將文檔中的每個單詞用具有唯一標識的跨度進行包裝。

JavaScript可以完全訪問觸摸事件,手勢和DOM模型。它比從Cocoa端獲得更好的UIWebView控制。您可以通過一些技巧與主機應用程序建立雙向通信通道。 PhoneGap有一個很好的實現。

如果您可以選擇另一種方式,我會選擇這個選項。如果你像我一樣陷入困境,那麼這是一個可行的,但不愉快的選擇。

+0

有趣。你的文件有多長(和複雜)?你允許多少註釋?性能影響是什麼?我想知道在整個事情在自己的體重下崩潰之前,您可以將多少個不同的ID放入DOM中... – benjismith 2010-05-18 16:33:23

+1

哦,還有...你提到了一些關於iTunes發行的內容,以防止你採用「私人WebKit」方法。您是指某種應用商店政策?我對此並不熟悉。你能詳細說明嗎?謝謝! – benjismith 2010-05-18 16:34:58

相關問題