2013-04-05 46 views
7

我正在開發xmpp-client應用程序。其中一個特點是發送微笑,用戶應該有能力編輯它像通用文本。 Viber App中的表情符號編輯是我想要實現的最佳示例。帶表情符號的UITextView編輯

我已經嘗試過三種方式來解決問題:

  • 我創建的表情像往常一樣的UIImageView,並把它作爲使用當前插入符矩形上的UITextView子視圖。我在文本視圖中使用5個空格作爲文本佔位符。有兩個問題:在中間插入文本時將表情圖標放在新行上(打印空白符不會使光標移動到新行);當用戶使用放大鏡放置插入符時,他可以通過表情符號(通過5個空格)移動插入符號,因爲在此過程中不會調用委託方法。我試過EGOTextView。在添加新行時,存在插入位置和調整大小的問題。當使用一行大小時,會出現一些渲染僞像。
  • 我也嘗試過使用UIWebView。但是,在成爲第一響應者時,基於文本大小和其他人工痕跡以及響應速度進行大小調整存在很大問題。

可能有人能給我一個真正有效的解決方案嗎?

回答

2

我不是真的進入UITextView/UITextInput的Rects和範圍機制,但我嘗試給你一個(未經測試的)建議,可能會達到預期的結果。

內置的iOS emojis是簡單的字符,所以我們可以通過構建自定義字體(或擴展現有字體)來遵循相同的路徑。 我們有兩個選擇:

  • 如果你想針對的iOS 6.0(即在UIKit類爲NSAttributedString原生支持),您可以嘗試建立一個包含所有你需要的表情自定義字體,和在你的NSAttributedString中使用它(屬性字符串可以混合不同的字體,字體大小,樣式等等)。

  • 你可以做的iOS 5類似的東西,但因爲你不能使用NSAttributedStringUITextView(所以你只限於一個字體整個文本),你應該使用結合在一起,實際的字體字符和自定義圖釋:所以你應該擴展你想用來輸入的字體,方法是將所有的圖釋添加到它。無論如何,我不知道這是否會產生許可證影響。

否則,你總是可以更低水平,如果採用CoreText自己的自定義的TextView,但我認爲這將是一個艱苦的工作。

+0

謝謝你的建議。我也開始考慮字體定製,但我實際上不知道如何在像蘋果表情符號這樣的字體中製作全綵色的位圖字形。 – yariksmirnov 2013-04-07 20:47:48

+0

有沒有辦法在iOS中的字體中包含彩色圖像? – Stavash 2013-05-06 08:29:11

+0

我設法使用自定義png圖像創建與sbix表的自定義字體。它完全可以在OS X上運行,但是iOS拒絕呈現只從字體映射到sbix表的字形,而不是系統版本的Apple Emoji。換句話說,如果您將UITextView中的自定義字體設置爲UILabel,並將文本值設置爲某些表情符號UTF符號代碼,即使在您的自定義字體字形爲該UTF代碼提供的情況下,也會呈現標準表情符字體的字形。 – yariksmirnov 2014-04-10 22:16:08