2013-04-05 6 views
7

Ich entwickle xmpp-Client-App. Eine der Funktionen ist das Senden von Lächeln und der Benutzer sollte die Fähigkeit haben, wie gewöhnlicher Text zu bearbeiten. Emoticons Bearbeitung in Viber App ist das beste Beispiel für das, was ich implementieren möchte.UITextView mit Emoticons Bearbeitung

Ich habe bereits versucht, drei Möglichkeiten, Problem zu lösen:

  • Ich erstelle Emoticon wie üblich UIImageView und legen Sie es als ein Subview auf UITextView mit aktuellen caret rect. Ich verwende 5 Leerzeichen als Textplatzhalter in der Textansicht. Es gibt zwei Probleme: Emoticons in eine neue Zeile einfügen, wenn Text in der Mitte eingefügt wird (Leerzeichen werden nicht in die neue Zeile verschoben); Wenn der Benutzer Caret mithilfe von Vergrößerungsglas platziert, kann er Caret durch Emoticon (durch 5 Leerzeichen) verschieben, als Delegate-Methode, die während dieses Prozesses nicht aufgerufen wird.
  • Ich habe versucht EGOTextView. Es gibt Probleme mit der Caret-Position und der Größenänderung, wenn eine neue Zeile hinzugefügt werden soll. Und es gibt einige Renderartefakte, wenn Sie eine Zeilengröße verwenden.
  • Ich habe auch versucht mit UIWebView. Aber es gab große Probleme mit der Größenanpassung basierend auf der Textgröße und anderen Artefakten mit der Geschwindigkeit der Antwort, wenn sie zum Ersthelfer wurden.

Kann mir jemand eine wirklich funktionierende Lösung geben?

Antwort

2

Ich bin nicht wirklich in Rectures und Bereiche Mechanismus von UITextView/UITextInput, aber ich versuche, Ihnen eine (ungeprüfte) Beratung, die vielleicht das erwartete Ergebnis erzielen könnte.

Integrierte iOS-Emojis sind einfache Zeichen, sodass wir denselben Pfad verfolgen können, indem Sie eine benutzerdefinierte Schriftart erstellen (oder eine vorhandene erweitern). Wir haben zwei Möglichkeiten:

  • Wenn Sie iOS 6.0 (das hat native Unterstützung für NSAttributedString in UIKit Klassen) ausrichten möchten, versuchen Sie könnten eine eigene Schriftart enthält alle Emoticons Sie brauchen zu bauen, und Verwenden Sie es in Ihrem NSAttributedString (attributierte Zeichenfolge kann verschiedene Schriftarten, Schriftgrößen, Stile und so weiter mischen).

  • Sie etwas ähnliches mit 5 iOS tun könnte, aber da Sie nicht NSAttributedString innerhalb UITextView verwenden können (so sind Sie nur eine Schriftart für den gesamten Text beschränkt) sollten Sie eine Schriftart verwenden, die die tatsächlichen kombiniert zusammen Zeichen und die benutzerdefinierten Emoticons: so sollten Sie die Schriftart, die Sie für die Eingabe verwenden möchten, erweitern, indem Sie alle Emoticons hinzufügen. Ich weiß nicht, ob das überhaupt Auswirkungen auf die Lizenzen haben könnte.

Ansonsten konnte man immer viel niedriger Ebene gehen, Ihre eigenen Textview Umsetzung CoreText, aber ich denke, es wäre eine harte Arbeit sein.

+0

Vielen Dank für den Rat. Ich denke auch über die Anpassung von Schriftarten nach, aber ich weiß eigentlich nicht, wie man vollfarbige Bitmap-Glyphen in der Schriftart wie Apple Emoji macht. – yariksmirnov

+0

Gibt es eine Möglichkeit, bunte Bilder in eine Schriftart auf iOS zu integrieren? – Stavash

+0

Ich habe es geschafft, benutzerdefinierte Schrift mit sbix-Tabelle mit benutzerdefinierten PNG-Bildern zu erstellen. Es funktioniert tadellos auf OS X, aber iOS lehnte ab, Glyphs zu rendern, die nur zur sbix Tabelle von der Schriftart anders als Systemversion von Apple Emoji hat. Mit anderen Worten, wenn Sie Sie benutzerdefinierte Schriftart in UITextView zu UILabel programmatisch einstellen und Textwert als einstellen Einige Emoji-UTF-Symbol-Code, Glyphe von Standard-Emoji-Schriftart wird gerendert, auch wenn in Ihrer benutzerdefinierten Schriftart Symbol für diesen UTF-Code darstellt. – yariksmirnov