2013-04-05 3 views
7

Я разрабатываю приложение xmpp-client. Одной из особенностей является отправка улыбок, и пользователь должен иметь возможность редактировать его, как обычный текст. Редактирование смайликов в Viber App - лучший пример того, что я хочу реализовать.UITextView с редактированием смайликов

Я уже пробовал три пути решения проблемы:

  • я создаю смайлик как обычный UIImageView и поместить его как подвид на UITextView, используя текущую каретку прямоугольник. Я использую 5 пробелов в качестве текстового заполнителя в текстовом представлении. Есть две проблемы: размещение смайликов на новой строке при вставке текста в середине (пробел печати не приведет к перемещению каретки в новую строку); когда пользователь помещает каретку с помощью увеличительного стекла, он может перемещать карет через смайлик (через 5 пробелов), поскольку метод делегата не вызывается во время этого процесса.
  • Я пробовал EGOTextView. Существуют проблемы с позицией каретки и изменением размера при добавлении новой строки. И есть некоторые артефакты рендеринга при использовании одного размера строки.
  • Я также попытался использовать UIWebView. Но были большие проблемы с изменением размера на основе размера текста и других артефактов со скоростью ответа, когда вы стали первым ответчиком.

Может быть, кто-нибудь может дать мне совет действительно работающего решения?

ответ

2

Я не вхожу в прямолинейный механизм и не задает диапазон UITextView/UITextInput, но я пытаюсь дать вам (непроверенный) совет, который, возможно, может достичь ожидаемого результата.

Встроенные iOS emojis - простые символы, поэтому мы можем следовать одному и тому же пути, создавая собственный шрифт (или расширяя существующий). У нас есть два варианта:

  • Если вы хотите целевую IOS 6,0 (который имеет встроенную поддержку NSAttributedString в классах UIKit), вы могли бы попытаться построить специальный шрифт, содержащее все смайлики вам нужно, и используйте его внутри своего NSAttributedString (атрибутная строка может смешивать разные шрифты, размеры шрифтов, стили и т. д.).

  • Вы могли бы сделать что-то подобное с IOS 5, но так как вы не можете использовать NSAttributedString внутри UITextView (так что вы ограничены только один шрифт для всего текста) вы должны использовать шрифт, который объединяет вместе фактическое символов и пользовательских смайликов: поэтому вы должны расширить шрифт, который хотите использовать для ввода, добавив к нему все смайлики. В любом случае, я не знаю, может ли это иметь последствия для лицензий.

В противном случае, вы всегда можете пойти гораздо более низкий уровень, реализуя свой собственный TextView с помощью CoreText, но я думаю, что это будет тяжелой работой.

+0

Благодарим за внимание. Я также начинаю думать о настройке шрифтов, но на самом деле я не знаю, как сделать полноцветные растровые глифы в шрифте, такие как apple emoji. – yariksmirnov

+0

Есть ли способ включить красочные изображения в шрифт на iOS? – Stavash

+0

Мне удалось создать пользовательский шрифт с помощью таблицы sbix, используя пользовательские изображения png. Он отлично работает на OS X, но iOS отказался отображать глифы, которые имеют только сопоставление с таблицей sbix от шрифта, кроме системной версии Apple Emoji. Иными словами, если вы настроили свой пользовательский шрифт в UITextView на UILabel программно и задали текстовое значение как некоторый символический код emoji UTF, глиф из стандартного шрифта emoji будет отображаться, даже если в вашем пользовательском символе шрифта представлен этот код UTF. – yariksmirnov

 Смежные вопросы

  • Нет связанных вопросов^_^