Pracuję nad aplikacją xmpp-client. Jedną z funkcji jest wysyłanie uśmiechów, a użytkownik powinien mieć możliwość edytowania jej jak zwykłego tekstu. Edycja emotikonów w Viber App jest najlepszym przykładem tego, co chcę zaimplementować.UITextView z edycją emotikonów
Próbowałem już trzy sposoby rozwiązania problemu:
- tworzę emotikon jak zwykle UIImageView i umieścić go jako podrzędny na UITextView używając aktualnego daszka rect. Używam 5 białych znaków jako tekstu zastępczego w widoku tekstowym. Występują dwa problemy: umieszczanie emotikonów na nowej linii podczas wstawiania tekstu w środku (drukowanie białych znaków nie powoduje przesuwania kursora do nowej linii); gdy użytkownik umieszcza karetkę za pomocą szkła powiększającego, może przenosić karetkę przez emotikon (przez 5 białych znaków), jako metoda delegowana, która nie jest wywoływana podczas tego procesu.
- Próbowałem EGOTextView. Występują problemy z pozycją karetki i zmianą rozmiaru, kiedy należy dodać nową linię. I są pewne artefakty renderowania, gdy używa się go w jednym rozmiarze linii.
- Próbowałem również za pomocą UIWebView. Wystąpiły jednak duże problemy z rozmiarem w oparciu o rozmiar tekstu i inne artefakty z szybkością reakcji, gdy stawał się pierwszym respondentem.
Być może ktoś mógłby mi doradzić, jak naprawdę działające rozwiązanie?
Dziękuję za poradę. Zacząłem też myśleć o dostosowywaniu czcionek, ale właściwie nie wiem, jak tworzyć kolorowe znaczniki bitmapowe w czcionkach takich jak emoji Apple. – yariksmirnov
Czy istnieje sposób na umieszczanie kolorowych czcionek w czcionce na iOS? – Stavash
Udało mi się stworzyć niestandardową czcionkę z tabelą sbix przy użyciu niestandardowych obrazów png. Doskonale działa na OS X, ale iOS odmówił renderowania glifów, które mają tylko mapowanie do tabeli sbix z czcionek innych niż wersja systemu Emoji firmy Apple. Innymi słowy, jeśli ustawisz niestandardową czcionkę w UITextView na UILabel programowo i ustawisz wartość tekstową jako niektóre kody symboli UTF emoji, glyph ze standardowej czcionki emoji będą renderowane, nawet jeśli w twoim niestandardowym kroju czcionki pojawią się dla tego kodu UTF. – yariksmirnov