在ios默认键盘的标签中使用表情符号

时间:2016-10-25 05:03:11

标签: ios swift uilabel emoji

我想使用来自iOS默认键盘的文本输入和表情符号并将其发送到服务器并显示该文本到标签,但我无法显示emojis.it只显示文本而不是表情符号。 如果我在本地做它比显示表情符号。

  self.labelName.text = TextFiled.text

输出:“测试”

但是当我发送它到服务器并从api接收它比表情符号消失了。 输出:“测试”

请不要无缘无故地投票我的问题

2 个答案:

答案 0 :(得分:2)

Swift 3.0扩展解决方案:

在将服务器发送到服务器时,您需要在iOS端编码和解码表情符号。您可以按照以下方式执行此操作。

extension String {

    func encodeChatString() -> String? {
        if let encodedTextData = self.data(using: .nonLossyASCII) {
            return String(data: encodedTextData, encoding: .utf8)
        }

        return nil
    }

    func decodeChatString() -> String? {
        let trimmedString = self.trimmingCharacters(in: .whitespacesAndNewlines)
        if let stringData = trimmedString.data(using: .utf8) {
            let messageString = String(data: stringData, encoding: .nonLossyASCII)
            return messageString
        }

        return nil
    }
}

当您发送消息编码字符串时,如下所示:

message.encodeChatString()

当您收到如下所示的消息解码字符串时:

message.decodeChatString()

答案 1 :(得分:1)

向服务器发送数据时,请使用此方法。

let data1 = txtMessage.text.dataUsingEncoding(NSNonLossyASCIIStringEncoding)!
let finalmessage = String(data: data1, encoding: NSUTF8StringEncoding)

当您在标签中设置之前从服务器获得响应时,请使用此方法。

 let trimmedString = YOURSERVER_RESPONSE_STRING.stringByTrimmingCharactersInSet(
                NSCharacterSet.whitespaceAndNewlineCharacterSet())
 let data2 = trimmedString.dataUsingEncoding(NSUTF8StringEncoding)!
 let messagestring = String(data: data2, encoding: NSNonLossyASCIIStringEncoding)
 YOURLABEL.text = messagestring as String

试试这个你的问题解决。