2011-11-04 15 views
12

jak wiesz, że aplikacja Mail w iOS 5 ma edytor tekstu sformatowanego, czy istnieje możliwość użycia tej funkcji w zwykłym UITextView?Korzystanie z edytora tekstu sformatowanego iOS 5

enter image description here

+0

Nie wydaje się możliwe, z tego co rozumiem http://stackoverflow.com/questions/4688332/how-to -bold-text-in-uitextview byłoby dobrą rzeczą, gdyby było to możliwe. – jbat100

Odpowiedz

1

iOS 5 bogaty kontrola edycja tekstu jest również obecny w aplikacji Notatki w iOS 4 (marka bogate wiadomości tekstowej na komputerze i zsynchronizować go zobaczyć).

Jest to niestandardowy formularz kontrolny firmy Apple, którego używają we własnych aplikacjach, ale nie jest publikowany w żadnym oficjalnym interfejsie API programisty. Prawdopodobnie znajduje się on w SDK, ale ponieważ jest nieudokumentowany, nawet jeśli go znajdziesz i użyjesz, Apple odrzuci twoją aplikację.

Zasadniczo, jeśli chcesz mieć kontrolę tekstu sformatowanego, musisz stworzyć własną.

Edytuj: Spróbuj użyć tego: https://github.com/omnigroup/OmniGroup/tree/master/Frameworks/OmniUI/iPad/Examples/TextEditor/. Nie użyłem go, więc nie wiem, jak dobrze to zadziała. (Link z this question)

25

Znam dwóch podstawowych podejść do stworzenia edytora tekstu w iOS 5:

  1. Zastosowanie rdzenia Tekst i widok niestandardowy. Nie mam żadnego doświadczenia z tym podejściem.

  2. Użyj atrybutu HTML UIWebView (zamiast UITextView) i contentEditable. Podstawową ideą jest załadowanie niestandardowego dokumentu HTML z katalogu zasobów aplikacji. Absolutne minimum, które musi to:

    < div contentEditable > TEXT_PLACEHOLDER </div >

Aby zainicjować bogaty widoku edytora tekstu: 1. Załaduj zawartość tego pliku do NSMutableString i zamień ciąg tekstowy TEXT_PLACEHOLDER na tekst, który chcesz edytować. 2. Wyślij komunikat loadHTMLString:baseURL: do UIWebView z tym ciągiem HTML.

Teraz masz UIWebView wyświetlający twój tekst wewnątrz div z contentEditable. W tym momencie powinieneś być w stanie uruchomić swoją aplikację, dotknąć tekstu, a także wyświetlić kursor i dodać/usunąć tekst. Następnym krokiem jest dodanie funkcji formatowania tekstu sformatowanego. Odbywa się to za pomocą zestawu prostych wywołań funkcji javascript. Zobacz the Mozilla documentation on contentEditable, aby uzyskać doskonałe referencje. Będziesz także chcą, aby dodać funkcję JavaScript do pliku szablonu HTML tak:

function getHtmlContent() { return document.getElementById('myDiv').innerHTML; } 

Więc można łatwo odzyskać edytowanego tekstu jako HTML za pomocą [myWebView stringByEvaluatingJavaScriptFromString:@"getHtmlContent()"]. Możesz również dodać niestandardowe elementy menu kontekstowego, takie jakie pokazujesz na ekranie w pytaniu.

Jeśli masz dostęp do centrum Apple iOS dev, sesja WWDC Rich Text Editing in Safari on iOS mówi wszystko o tym podejściu.

Odmianą tego podejścia jest użycie edytora tekstu sformatowanego innej firmy, np. TinyMCE. Słyszałem o pewnym sukcesie w integracji z UIWebView w iOS 5. Znowu opiera się to na atrybucie contentEditable.

+0

Podejście HTML działa zupełnie, super !!!!! – Nitin

Powiązane problemy