0

私はこれに苦労してきました。ユーザーは TextView にテキストや絵文字を入力する必要があります。絵文字を入力するために、自分の画像が入った絵文字キーボードを手に入れました。問題は、シンボルの上に絵文字の画像を同時に表示しながら、テキスト内の絵文字の記号(たとえば「(笑顔)」)を保持する必要があることです。

したがって、TextView.text プロパティは「Hello (smile)」を返しますが、ユーザーには「Hello [the picture]」が表示されます。

Android では、スパンされた文字列を使用して、テキストの一部を画像で覆うことができます。したがって、Androidでは問題なく目的を達成できました。

iOS では、属性付き文字列は Spanned と似た概念だと思っていましたが、これまでのところ、絵文字のコードを (NSTextAttachment を使用して) 写真に完全に置き換えることしかできませんでした。写真を含む 1 つの属性付き文字列と、コードを含む別の文字列を維持することなく、目的を達成する方法はありますか?

4

2 に答える 2

0

より洗練された解決策を見つけることができなかったので、絵文字の画像を含む 1 つの属性文字列と、絵文字コードを保持する 1 つの通常の文字列を維持することにしました。したがって、私の文字列は「Hello %101%」ですが、私のattStringはたとえば「Hello [Smiling picture]」です。私と同じようにチャット アプリを作成することに興味がある場合は、次の擬似コードをご覧ください。

絵文字キーボードの場合:

{

場所 loc の属性付き文字列に画像を挿入します。

textView shouldChangeTextInRange:(loc,0) replacementText:"%101"; を呼び出します。

}

ビューコントローラーの shouldChangeTextInRange:(loc,length) replacementText:text:

{

通常の文字列を解析して、既存の顔文字コードを飛び越えて、loc に一致する場所を見つけます。

指定された場所で、通常の文字列のテキスト (たとえば %101%) を置き換えます。

}

注: shouldChangeTextInRange は、削除を含む通常のキーボード入力に対しても呼び出されます。

于 2015-04-17T04:05:45.720 に答える
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;
    }
于 2015-04-16T05:46:22.823 に答える