2015-04-16 3 views
0

Я боролся с этим. Пользователь должен ввести текст и/или смайлики в TextView. У меня есть смайличная клавиатура с моими собственными изображениями для ввода смайликов. Проблема заключается в том, что мне нужно сохранить символ (например, «(улыбка») для смайлика в тексте, в то время как в то же время показывается изображение эмоции поверх символа.iOS/AttributedString: как я могу наложить слово на изображение?

Таким образом, пользователь увидит «Hello [the picture] ", в то время как свойство TextView.text вернет« Hello (smile) ».

На Android вы можете использовать Spanned string, которые позволяют вам покрывать часть вашего текста изображением. Таким образом, на Android мне удалось достичь своей цели без Проблема.

В iOS я думал, что атрибутные строки были похожими понятиями для Spanned, но до сих пор все, что я смог сделать, это полностью заменить код смайлика изображением (используя NSTextAttachment). достичь моей цели, не имея необходимости поддерживать одну отнесенную строку, содержащую изображения, и одну отдельную строку, содержащую коды?

+0

Эй, Джордж, более конкретный .. ваш вопрос имеет двойной смысл или трудно занижен. –

+0

Привет, Бевин, обновил мой пост, надеюсь, что это яснее. – Georges

+0

Я не получаю ваш запрос на самом деле, что вы хотите на выходе .. –

ответ

0

Вы можете использовать этот метод, надеюсь, он сработает для вас.

- (NSAttributedString*) parseEmoticons:(NSAttributedString*)text { 

      text = [text stringByReplacingOccurrencesOfString:@":-)" withString:@""]; 
      text = [text stringByReplacingOccurrencesOfString:@";P" withString:@""]; 
      text = [text stringByReplacingOccurrencesOfString:@"B-)" withString:@""]; 
      text = [text stringByReplacingOccurrencesOfString:@";-P" withString:@""]; 

      return text; 
    } 
+0

Спасибо Avineet. Проблема заключается в том, что это решение заменяет коды (строки) 1-символьными смайлами (строки). Мне нужно использовать свои собственные смайлики (картинки) и сохранять коды ниже. – Georges

0

Не сумев найти более элегантное решение, я прибегал к поддержанию один attributedstring, содержащих смайлики картины, и одну регулярной строки для хранения кодов смайликов. Таким образом, мой attString, например, «Hello [Smiling picture]», в то время как моя строка «Hello% 101%». Если вы заинтересованы в создании болтая приложение, как я, вот псевдо-код:

В смайлик клавиатуры:

{

Вставить изображение в приписываемой строку на месте LOC;

Вызов textView shouldChangeTextInRange: (loc, 0) replacementText: "% 101";

}

В контроллере представления на shouldChangeTextInRange: (LOC, длина) replacementText: Текст:

{

Анализировать регулярную строку прыгать через смайлики коды там уже найти соответствующее местоположение LOC ;

Замените текст (например,% 101%) в правильной строке} в указанном месте.

}

Примечание: shouldChangeTextInRange также называют регулярные записи клавиатуры, включая удаление.

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