2011-11-04 163 views
12

如您所知,iOS 5中的郵件應用程序擁有豐富的文本編輯器,是否有任何可能的方式將此功能用於常規的UITextView?使用iOS 5富文本編輯器

enter image description here

+0

這似乎並不可能http://stackoverflow.com/questions/4688332/how-to如果可能的話,-bold-text-in-uitextview會是一件好事。 – jbat100

回答

1

的iOS 5的富文本編輯控制也存在於iOS 4的筆記應用程序(使計算機並實現同步看到了豐富的文本註釋)。

這是一個自定義Apple製造的控件,它們在自己的應用程序中使用,但不會在任何官方開發人員API中發佈。它可能位於SDK的某處,但因爲它沒有記錄,即使您找到並使用它,Apple也會拒絕您的應用程序。

基本上,如果你想要一個豐富的文本控件,你將不得不自己做。

編輯:試試用這個:https://github.com/omnigroup/OmniGroup/tree/master/Frameworks/OmniUI/iPad/Examples/TextEditor/。我沒有使用它,所以我不知道它會如何工作。 (鏈接自this question

25

我知道的兩種基本方法來創建iOS 5中富文本編輯器:

  1. 使用的核心文本和自定義視圖。我對這種方法沒有任何經驗。

  2. 使用UIWebView(而不是UITextView)和contentEditable HTML屬性。基本的想法是從您的應用程序資源目錄加載一個自定義的HTML文檔。最起碼,它需要是這樣的:

    <格CONTENTEDITABLE > TEXT_PLACEHOLDER </DIV >

要初始化的富文本編輯觀點: 1.加載該文件的內容爲NSMutableString和用您想要編輯的文本替換TEXT_PLACEHOLDER字符串。 2.使用該HTML字符串將loadHTMLString:baseURL:消息發送到UIWebView。

現在你有一個UIWebView在divcontentEditable內顯示你的文字。此時,您應該可以在應用程序上點擊文本,並使用光標進行展示,並且可以添加/刪除文本。下一步是添加富文本格式功能。這是通過一組簡單的javascript函數調用完成的。請參閱the Mozilla documentation on contentEditable以獲得最佳參考。你也將要對一個JavaScript函數添加到您的HTML模板文件是這樣的:

function getHtmlContent() { return document.getElementById('myDiv').innerHTML; } 

所以,你可以很容易地檢索使用[myWebView stringByEvaluatingJavaScriptFromString:@"getHtmlContent()"]編輯的文本作爲HTML。您還可以添加自定義上下文菜單項,就像您在問題中的屏幕截圖中顯示的那樣。

如果您有權訪問Apple iOS開發中心,WWDC會話Rich Text Editing in Safari on iOS將會介紹有關此方法的所有信息。

此方法的一種變體是使用第三方富文本編輯器,如TinyMCE。我聽說在iOS 5中將其集成到UIWebView中取得了一些成功。這又取決於contentEditable屬性。

+0

HTML方法完全可行,真棒!!!!! – Nitin