iOS/AttributedString:如何用图像覆盖单词?

iOS/AttributedString:如何用图像覆盖单词?,ios,nsattributedstring,emoticons,spanned,Ios,Nsattributedstring,Emoticons,Spanned,我一直在努力解决这个问题。用户需要在文本视图中输入文本和/或表情符号。我有一个带有我自己图像的表情键盘来输入表情。问题是我需要在文本中保留一个符号,例如表情符号的微笑,同时在符号顶部显示表情符号图片 因此,用户将看到Hello[图片],而TextView.text属性将返回Hello微笑 在Android上,您可以使用跨字符串,它允许您用图像覆盖部分文本。因此,在安卓系统上,我成功地实现了我的目标 在iOS上,我认为属性字符串与span是一个类似的概念,但到目前为止,我所能做的就是使用NSTex

我一直在努力解决这个问题。用户需要在文本视图中输入文本和/或表情符号。我有一个带有我自己图像的表情键盘来输入表情。问题是我需要在文本中保留一个符号,例如表情符号的微笑,同时在符号顶部显示表情符号图片

因此,用户将看到Hello[图片],而TextView.text属性将返回Hello微笑

在Android上,您可以使用跨字符串,它允许您用图像覆盖部分文本。因此,在安卓系统上,我成功地实现了我的目标


在iOS上,我认为属性字符串与span是一个类似的概念,但到目前为止,我所能做的就是使用NSTextAttachment将表情符号的代码完全替换为图片。有没有一种方法可以实现我的目标,而不必维护一个包含图片的属性字符串和一个包含代码的单独字符串?

您可以使用这种方法,希望它对您有用

-NSAttributedString*解析表情:NSAttributedString*文本{
text=[text stringByReplacingOccurrencesOfString:@:-with string:@由于找不到更优雅的解决方案,我求助于维护一个包含表情图片的attributed字符串,以及一个用于保存表情代码的常规字符串。因此,我的attString就是例如Hello[smilling picture]而我的字符串是Hello%101%。如果您有兴趣像我一样构建聊天应用程序,以下是伪代码:

在表情键盘中:

{

将图片插入位置loc处的属性字符串中

调用文本视图应更改文本范围:loc,0替换文本:%101

}

在视图控制器中的shouldChangeTextInRange:loc,length replacementText:text:

{

解析常规字符串,跳过已有的表情符号代码,找到与loc匹配的位置

在标识的位置替换常规字符串}中实例%101%的文本

}


注意:shouldChangeTextInRange也用于常规键盘输入,包括delete。

Hey Georges更具体一些。你的问题有双重含义或很难理解。嗨,Bevin,更新了我的帖子,希望它更清晰。我没有得到你的查询,实际上是你想要的输出。抱歉,我不知道如何让它更清晰…作为输出我希望textview显示文本和图像,因此attributedtext应该包括这些图像,我还希望textview的text属性包括文本和表情符号代码,例如微笑或123等。抱歉,乔治,我得到了你想要问的任何问题…从技术上讲,这是可能的,但很难管理。你必须创建自己的类来draw文本和图像OnIviewContext。您可以使用从UIView重写类。感谢Avineet。问题是此解决方案将代码字符串替换为1个字符的表情字符串。我需要使用自己的表情图片并保留下面的代码。